এই অ্যালগরিদম একটি প্রদত্ত সংখ্যাকে ইংরেজি শব্দে রূপান্তর করবে। 564 এর মত হবে পাঁচশত চৌষট্টি।
এই অ্যালগরিদমের জন্য, কিছু পূর্বনির্ধারিত স্ট্রিং দেওয়া আছে, সেই তালিকা থেকে, এটি শব্দে পরিণত করার জন্য উপযুক্ত শব্দ পাবে।
তালিকাগুলো এরকম
- ইউনিট: এটি (0 থেকে 9) এর জন্য সমস্ত শব্দ ধারণ করবে যেমন জিরো, ওয়ান…নাইন
- দুই সংখ্যা: এটি (10 - 19) থেকে সমস্ত সংখ্যা ধারণ করবে, যেমন দশ, এগারো…উনিশ
- tenMul: দশ গুণের জন্য, (20-90), যেমন বিশ, ত্রিশ, … নব্বই।
- টেন পাওয়ার: এটি 10 র 2 এবং 3 শক্তি হিসাবে শত এবং হাজারের জন্য
ইনপুট এবং আউটপুট
Input: The number: 568 Output: Five Hundred And Sixty Eight
অ্যালগরিদম
numToWord(num)
কিছু তালিকা আছে যা বিভিন্ন পূর্ণসংখ্যার জন্য শব্দ ধারণ করে
ইনপুট: সংখ্যা।
আউটপুট: সংখ্যাকে শব্দে উপস্থাপন করুন।
Begin if n >= 0 and n < 10, then display units(n) into words else if n >= 10 and n < 20, then display twoDigitNum(n) into words //It is from ten to nineteen else if n >= 20 and n <100, then display tensMultiple(n/10), into words if n mod 10 ≠ 0, then numToWord(n mod 10) else if n >= 100 and n < 1000, then display units(n/100), into words display “Hundred”, into words //Hundred if n mod 100 ≠ 0, then display “And” numToWord(n mod 100) else if n >= 1000 and n <= 32767, then numToWord(n/1000) display “Thousand” if n mod 1000 ≠ 0, then numToWord(n mod 1000) else display invalid number and exit End
উদাহরণ
#include<iostream> using namespace std; string getUnit(int n) { //Return single digit to word string unit[10] = {"Zero", "One","Two", "Three","Four","Five", "Six","Seven","Eight","Nine"}; return unit[n]; } string getTwoDigits(int n) { //Here n is 2 digit number string td[10] = {"Ten", "Eleven","Twelve","Thirteen", "Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"}; return td[n%10]; } string getTenMul(int n) { //Here n is multiple of 10 string tm[8] = {"Twenty", "Thirty","Fourty", "Fifty","Sixty", "Seventy","Eighty","Ninty"}; return tm[n-2]; } string getTenPow(int pow) { //The power of ten in words string power[2] = {"Hundred", "Thousand"}; return power[pow-2]; } void printNumToWord(int n) { if(n >= 0 && n < 10) cout << getUnit(n) << " "; //Unit values to word else if(n >= 10 && n < 20) cout << getTwoDigits(n) << " "; //from eleven to nineteen else if(n >= 20 && n < 100) { cout << getTenMul(n/10)<<" "; if(n%10 != 0) printNumToWord(n%10); //Recursive call to convert num to word }else if(n >= 100 && n < 1000) { cout << getUnit(n/100)<<" "; cout <<getTenPow(2) << " "; if(n%100 != 0) { cout << "And "; printNumToWord(n%100); } }else if(n >= 1000 && n <= 32767) { printNumToWord(n/1000); cout <<getTenPow(3)<<" "; if(n%1000 != 0) printNumToWord(n%1000); }else printf("Invalid Input"); } main() { int number; cout << "Enter a number between 0 to 32767: "; cin >> number; printNumToWord(number); }
আউটপুট
Enter a number between 0 to 32767: 568 Five Hundred And Sixty Eight