हमें दो पूर्णांक संख्याएँ दी गई हैं मान लीजिए num1 और num2 और कार्य संख्या 1 को 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 को num1%num2 के साथ सेट करें
-
गिनती के मान को 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