আমাদের দুটি পূর্ণসংখ্যা দেওয়া হয়েছে, আসুন num1 এবং num2 বলি এবং কাজটি হল num1 কে num2 দিয়ে ভাগ করা এবং এই প্রদত্ত সংখ্যাগুলিকে ভাগ করার জন্য দশমিকের পরে অঙ্কের গণনা করা।
উদাহরণস্বরূপ
Input − num1 = 2, num2 = 5 Output − count is 1
ব্যাখ্যা − যখন আমরা 2 কে 5 দিয়ে ভাগ করি অর্থাৎ? =0.4, তাই দশমিকের পরে সংখ্যা 1 তাই গণনা হল 1।
Input − num1 = 2, num2 = 0 Output − Floating point exception (core dumped)
ব্যাখ্যা − যখন আমরা যেকোন সংখ্যাকে 0 দিয়ে ভাগ করি এটি একটি ত্রুটি ফিরিয়ে দেবে এবং প্রোগ্রামটি অস্বাভাবিকভাবে বন্ধ করে দেবে।
Input − num1 = 2, num2 = 3 Output − Infinite
ব্যাখ্যা − যখন আমরা 2 কে 3 দিয়ে ভাগ করি অর্থাৎ 2/3 =0.666..., দশমিকের পরে সংখ্যা অসীম তাই আমরা অসীম প্রিন্ট করব।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
দুটি ভেরিয়েবল ইনপুট করা যাক, num1 এবং num2
-
দশমিক সংখ্যার গণনা সংরক্ষণ করার জন্য একটি পরিবর্তনশীল গণনা তৈরি করুন এবং এটি 0 দিয়ে শুরু করুন
-
unordered_map প্রকারের একটি পরিবর্তনশীল um তৈরি করুন
-
স্টার্ট লুপ যখন num1%num2 !=0
-
লুপের ভিতরে, num1%num2
সহ num1 সেট করুন -
গণনার মান 1 দ্বারা বৃদ্ধি করুন
-
পরীক্ষা করুন যদি um.find(num1) !=um.end() তারপরে -1
রিটার্ন করুন -
লুপের বাইরে, গণনায় মানটি ফেরত দিন।
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
#include <iostream> #include <unordered_map> using namespace std; int countdigits(int x, int y){ int result = 0; // result variable unordered_map<int, int> mymap; // calculating remainder while (x % y != 0){ x = x % y; result++; if (mymap.find(x) != mymap.end()){ return -1; } mymap[x] = 1; x = x * 10; } return result; } int main(){ int res = countdigits(2, 5); (res == -1)? cout << "count is Infinty" : cout <<"count is "<<res; return 0; }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
count is 1