Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में आवर्ती दशमलव का अंश

मान लीजिए कि हमारे पास एक भिन्न के अंश और हर का प्रतिनिधित्व करने वाले दो पूर्णांक हैं, हमें भिन्न को स्ट्रिंग प्रारूप में खोजना होगा। यदि भिन्नात्मक भाग दोहरा रहा है, तो दोहराए जाने वाले भाग को कोष्ठकों में संलग्न करें। इसलिए यदि अंश 2 है और हर 3 है, तो आउटपुट "0.(6)" होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • अगर अंश 0 है, तो 0 वापस करें

  • एक सरणी को परिभाषित करें उत्तर

  • यदि अंश <0 और हर> 0 या अंश 0 और हर <0, तो उत्तर सरणी में नकारात्मक चिह्न '-' डालें

  • भाजक :=|अंशक| और लाभांश :=|denominator|, शेष :=भाजक मॉड लाभांश

  • x :=भाजक/लाभांश की स्ट्रिंग

  • x से प्रत्येक वर्ण को उत्तर सरणी में डालें

  • यदि शेष =0 है, तो उत्तर सरणी को एक स्ट्रिंग के रूप में वापस करें।

  • उत्तर में '.' बिंदु डालें

  • एक नक्शा परिभाषित करें मी

  • जबकि शेष 0 नहीं है

    • यदि शेष m में मौजूद है, तो

      • ans के सूचकांक m[शेष] पर प्रारंभिक कोष्ठक सम्मिलित करें

      • अंत में बंद कोष्ठकों को ans में डालें

      • लूप तोड़ें

    • अन्यथा

      • मी [शेष] :=उत्तर का आकार

      • शेष :=शेष * 10

      • उत्तर में वर्ण के रूप में (शेष / लाभांश) डालें

      • शेष :=शेष आधुनिक लाभांश

  • उत्तर सरणी को स्ट्रिंग के रूप में लौटाएं।

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string fractionToDecimal(int numerator, int denominator) {
      if(numerator == 0)return "0";
      vector <char> ans;
      if(numerator < 0 && denominator > 0 || numerator > 0 && denominator < 0)ans.push_back('-');
      long divisor = labs(numerator);
      long dividend = labs(denominator);
      long remainder = divisor % dividend;
      string x = to_string(divisor/dividend);
      for(int i = 0; i < x.size(); i++){
         ans.push_back(x[i]);
      }
      if(remainder == 0){
         return string(ans.begin(), ans.end());
      }
      ans.push_back('.');
      map <int, int> m;
      while(remainder != 0){
         if(m.find(remainder)!=m.end()){
            ans.insert(ans.begin() + m[remainder], '(');
            ans.push_back(')');
            break;
         }else{
            m[remainder] = ans.size();
            remainder *= 10;
            ans.push_back((remainder / dividend) + '0');
            remainder %= dividend;
         }
      }
      return string(ans.begin(), ans.end());
   }
};
main(){
   Solution ob;
   cout << ((ob.fractionToDecimal(100,6)));
}

इनपुट

100
6

आउटपुट

16.(6)

  1. हेक्साडेसिमल से दशमलव के लिए C++ प्रोग्राम

    एक इनपुट के रूप में एक हेक्साडेसिमल संख्या के साथ दिया गया, कार्य दिए गए हेक्साडेसिमल संख्या को दशमलव संख्या में परिवर्तित करना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और 0 - 9 के मूल्यों के साथ दर्शाया जाता है जबकि हे

  1. C++ में द्विआधारी से दशमलव रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक बाइनरी नंबर के साथ दिया गया, कार्य दिए गए बाइनरी नंबर को एक दशमलव संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और बाइनरी संख्या को आधार 2 के साथ दर्शाया जाता है क्योंकि इसमें केवल दो बाइनरी अंक 0 और 1 होते हैं जबकि दशमलव संख्या 0 - 9 से शुर

  1. Decimal.Remainder () सी # में विधि

    सी # में Decimal.Remainder () विधि दो दशमलव मान विभाजित के बाद शेष गणना करने के लिए प्रयोग किया जाता है। सिंटैक्स निम्नलिखित वाक्य रचना है - public static decimal Remainder (decimal val1, decimal val2); इन सबसे ऊपर, VAL1 लाभांश, जबकि val2 भाजक है। उदाहरण हमें अब एक उदाहरण देखते हैं Decimal.Rema