কম্পিউটার

C++ এ মূলদ সংখ্যা উপস্থাপনা থেকে দশমিক সংখ্যা দেখানোর প্রোগ্রাম


ধরুন আমাদের কাছে লব এবং হর নামে দুটি সংখ্যা রয়েছে যা আকারে একটি মূলদ সংখ্যাকে প্রতিনিধিত্ব করে (লব / হর)। আমরা একটি স্ট্রিং হিসাবে তার দশমিক উপস্থাপনা খুঁজে পেতে হবে. যদি কিছু পুনরাবৃত্ত সংখ্যা থাকে, তাহলে সেগুলিকে বন্ধনী দিয়ে ঘিরে দিন।

সুতরাং, যদি ইনপুটটি অংক =164 হর =3 এর মত হয়, তাহলে আউটপুট হবে "54.(6)"।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি লব 0 এর মত হয়, তাহলে −
    • রিটার্ন "0"
  • একটি অ্যারে উত্তর সংজ্ঞায়িত করুন
  • যদি লব <0 এবং হর> 0 বা লব> 0 এবং হর <0, তাহলে −
    • উত্তর শেষে '-' সন্নিবেশ করান
  • ভাজক :=|অঙ্ক |
  • লভ্যাংশ :=|ডিনোমিনেটর|
  • অবশিষ্ট :=ভাজক মোড লভ্যাংশ
  • x :=(ভাজক / লভ্যাংশ) স্ট্রিং এ রূপান্তর করুন
  • আরম্ভ করার জন্য i :=0, যখন i করুন
  • উত্তর শেষে x[i] ঢোকান
  • যদি অবশিষ্টাংশ 0 এর সমান হয়, তাহলে −
    • স্ট্রিং হিসাবে উত্তর ফেরত দিন
  • ' সন্নিবেশ করান।' উত্তরের শেষে
  • একটি মানচিত্র m সংজ্ঞায়িত করুন
  • যখন অবশিষ্টাংশ 0 এর সমান নয়, −
      করুন
    • যদি অবশিষ্টাংশ m এ না থাকে, তাহলে −
      • সন্নিবেশ করান (উত্তর সংমিশ্রণের প্রথম উপাদান '(') উত্তরে
      • উত্তর শেষে ')' সন্নিবেশ করান
      • লুপ থেকে বেরিয়ে আসুন
    • অন্যথায় -
      • m[remainder] :=উত্তরের আকার
      • অবশিষ্ট :=অবশিষ্ট * 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++ প্রোগ্রাম

    2. C++ এ দশমিক থেকে হেক্সাডেসিমেল রূপান্তরের জন্য প্রোগ্রাম

    3. C++ এ দশমিক থেকে বাইনারি রূপান্তরের জন্য প্রোগ্রাম

    4. C++ প্রোগ্রাম দশমিক সংখ্যাকে বাইনারিতে রূপান্তর করতে