কম্পিউটার টিউটোরিয়াল

C++-এ একটি ধনাত্মক পূর্ণসংখ্যা শব্দে প্রকাশ করার প্রোগ্রাম

মান লিজिए আমাদের একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া আছে। আমাদের সংখ্যাটিকে শব্দে বানাতে হবে; যেমন যদি "56" নম্বর ইনপুট হিসেবে দেওয়া হয় তবে আউটপুট হবে "Fifty-Six"। রূপান্তরের রেঞ্জ হল এক बिलিয়ন পর্যন্ত।

তাই, যদি ইনপুট হয় input = 5678, তবে আউটপুট হবে Five Thousand Six Hundred Seventy-Eight।

এটি সমাধান করতে, আমরা এই ধাপগুলো ফলো করব:-

  • 'numbers' নামে একটি অ্যারে ডিফাইন করুন যেটি পেয়ার ধারণ করে যেমন:- {{"Billion", 1000000000},
    • {"Million", 1000000},
    • {"Thousand", 1000},
    • {"Hundred", 100},
    • {"Ninety", 90},
    • {"Eighty", 80},
    • {"Seventy", 70},
    • {"Sixty", 60},
    • {"Fifty", 50},
    • {"Forty", 40},
    • {"Thirty", 30},
    • {"Twenty", 20},
    • {"Nineteen", 19},
    • {"Eighteen", 18},
    • {"Seventeen", 17},
    • {"Sixteen", 16},
    • {"Fifteen", 15},
    • {"Fourteen", 14},
    • {"Thirteen", 13},
    • {"Twelve", 12},
    • {"Eleven", 11},
    • {"Ten", 10},
    • {"Nine", 9},
    • {"Eight", 8},
    • {"Seven", 7},
    • {"Six", 6},
    • {"Five", 5},
    • {"Four", 4},
    • {"Three", 3},
    • {"Two", 2},
    • {"One", 1}}
  • solve() নামে একটি ফাংশন ডিফাইন করুন। এটি input নেয়।
    • যদি input ০-এর সমান হয়, তবে -
      • return "Zero"
    • numbers অ্যারেতে প্রতিটি num-এর জন্য, করুন
      • যদি num-এর দ্বিতীয় মান <= input, তবে -
        • যদি num-এর দ্বিতীয় মান >= 100, তবে -
          • result := solve(input / num-এর দ্বিতীয় মান)
          • যদি input > (input / num-এর দ্বিতীয় মান) * num-এর দ্বিতীয় মান, তবে -
            • result := result + " " + solve(input - (input / num-এর দ্বিতীয় মান) * num-এর দ্বিতীয় মান)
        • অন্যথায়,
          • result := num-এর প্রথম মান + ((যদি input > num-এর দ্বিতীয় মান, তবে: " " + solve(input - num-এর দ্বিতীয় মান), অন্যথায়: ""))
        • লুপ থেকে বের হোন
    • result রিটার্ন করুন
  • solve(input)

উদাহরণ

বेहतर বুঝতে নিচের ইমপ্লিমেন্টেশনটি দেখুন:-

#include<bits/stdc++.h> 
using namespace std; 

vector<pair<string, int>> numbers{{"Billion", 1000000000}, 
    {"Million", 1000000}, 
    {"Thousand", 1000}, 
    {"Hundred", 100}, 
    {"Ninety", 90}, 
    {"Eighty", 80}, 
    {"Seventy", 70}, 
    {"Sixty", 60}, 
    {"Fifty", 50}, 
    {"Forty", 40}, 
    {"Thirty", 30}, 
    {"Twenty", 20}, 
    {"Nineteen", 19}, 
    {"Eighteen", 18}, 
    {"Seventeen", 17}, 
    {"Sixteen", 16}, 
    {"Fifteen", 15}, 
    {"Fourteen", 14}, 
    {"Thirteen", 13}, 
    {"Twelve", 12}, 
    {"Eleven", 11}, 
    {"Ten", 10}, 
    {"Nine", 9}, 
    {"Eight", 8}, 
    {"Seven", 7}, 
    {"Six", 6}, 
    {"Five", 5}, 
    {"Four", 4}, 
    {"Three", 3}, 
    {"Two", 2}, 
    {"One", 1}}; 

string solve(int input) { 
    if (input == 0) return "Zero"; 
    string result; 
    for (auto& num : numbers) { 
        if (num.second <= input) { 
            if (num.second >= 100) { 
                result = solve(input / num.second) + " " + num.first; 
                if (input > (input / num.second) * num.second) 
                    result += " " + solve(input - (input / num.second) * num.second); 
            } else { 
                result = num.first + (input > num.second ? " " + solve(input - num.second) : ""); 
            } 
            break; 
        } 
    } 
    return result; 
} 

int main() { 
    cout<< solve(5678) <<endl; 
    return 0; 
}

ইনপুট

5678

আউটপুট

Five Thousand Six Hundred Seventy Eight
  1. আর্মস্ট্রং নম্বর (Armstrong Number) চেক করার C++ প্রোগ্রাম

  2. সংখ্যার ঘাত (Power) বের করার C++ প্রোগ্রাম (রিকার্সিভ ও নন-রিকার্সিভ)

  3. C++ প্রোগ্রাম: সংখ্যা উল্টানো (Reverse a Number)

  4. পাইথনে ধনাত্মক পূর্ণসংখ্যার বিট উল্টিয়ে ফেলার প্রোগ্রাম