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

C++ में परिमेय संख्या निरूपण से दशमलव संख्या दिखाने का कार्यक्रम

मान लीजिए कि हमारे पास दो संख्याएँ हैं जिन्हें अंश और हर कहा जाता है जो एक परिमेय संख्या (अंश / हर) का प्रतिनिधित्व करते हैं। हमें इसका दशमलव निरूपण एक स्ट्रिंग के रूप में करना है। यदि कुछ आवर्ती संख्याएँ हैं, तो उन्हें कोष्ठक से घेरें।

इसलिए, यदि इनपुट अंश =164 हर =3 की तरह है, तो आउटपुट "54.(6)" होगा।

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

  • यदि अंश 0 के समान है, तो −
    • वापसी "0"
  • एक सरणी को परिभाषित करें उत्तर
  • यदि अंश <0 और हर> 0 या अंश> 0 और हर <0, तो -
    • उत्तर के अंत में '-' डालें
  • divisor :=|numerator|
  • लाभांश :=|हर|
  • शेष :=भाजक मॉड लाभांश
  • x :=(भाजक / लाभांश) को स्ट्रिंग में बदलें
  • इनिशियलाइज़ i :=0 के लिए, जब i करें
  • उत्तर के अंत में x[i] डालें
  • यदि शेषफल 0 के समान है, तो −
    • स्ट्रिंग के रूप में उत्तर दें
  • सम्मिलित करें।' उत्तर के अंत में
  • एक मानचित्र को परिभाषित करें मी
  • जबकि शेष 0 के बराबर नहीं है, −
      . करें
    • यदि शेषफल m में नहीं है, तो −
      • सम्मिलित करें (उत्तर का पहला तत्व '(') को उत्तर में डालें
      • उत्तर के अंत में
      • सम्मिलित करें')'
      • लूप से बाहर आएं
    • अन्यथा −
      • m[शेष] :=उत्तर का आकार
      • शेष :=शेष * 10
      • उत्तर के अंत में
      • सम्मिलित करें (शेष / लाभांश) '0' को संयोजित करें
      • शेष :=शेष आधुनिक लाभांश
  • स्ट्रिंग के रूप में उत्तर दें
  • उदाहरण

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

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
       public:
       string solve(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());
       }
    };
    string solve(int numerator, int denominator) {
       return (new Solution())->solve(numerator, denominator);
    }
    int main() {
       cout << solve(164, 3);
    }

    इनपुट

    164, 3

    आउटपुट

    54.(6)

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

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

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

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

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

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