विधि 1: पारंपरिक लूप विधि (10 से विभाजित करके)
इस विधि में, हम संख्या को 10 से विभाजित करके कम करते हैं और तब तक गिनते हैं जब तक संख्या 0 नहीं हो जाती।
उदाहरण
#include <iostream>
using namespace std;
int count_digit(int number) {
int count = 0;
// ऋणात्मक संख्याओं को संभालें
if (number < 0) number = -number;
// 0 का विशेष मामला
if (number == 0) return 1;
while (number != 0) {
number = number / 10;
count++;
}
return count;
}
int main() {
cout << "Number of digits in 1245: " << count_digit(1245) << endl;
cout << "Number of digits in -123: " << count_digit(-123) << endl;
cout << "Number of digits in 0: " << count_digit(0) << endl;
return 0;
}
आउटपुट
Number of digits in 1245: 4 Number of digits in -123: 3 Number of digits in 0: 1
विधि 2: लघुगणक विधि (log10 का उपयोग करके)
इस विधि में हम बेस 10 लघुगणक फ़ंक्शन का उपयोग करके परिणाम प्राप्त करते हैं। सूत्र होगा floor(log10(number)) + 1।
उदाहरण के लिए, यदि संख्या 1245 है, तो यह 1000 से ऊपर और 10000 से नीचे है, इसलिए लघुगणक मान 3 < log10(1245) < 4 की रेंज में होगा। पूर्णांक भाग लेने पर यह 3 होगा। फिर इसमें 1 जोड़कर अंकों की संख्या प्राप्त करें।
उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
int count_digit(int number) {
if (number == 0) return 1;
if (number < 0) number = -number;
return static_cast(log10(number) + 1);
}
int main() {
cout << "Number of digits in 1245: " << count_digit(1245) << endl;
cout << "Number of digits in 99999: " << count_digit(99999) << endl;
return 0;
}
आउटपुट
Number of digits in 1245: 4 Number of digits in 99999: 5
तुलना
| पहलू | लूप विधि | लघुगणक विधि |
|---|---|---|
| समय जटिलता | O(d) जहाँ d अंकों की संख्या है | O(1) |
| किनारे के मामले | 0 और ऋणात्मक को आसानी से संभालता है | 0 और ऋणात्मक के लिए विशेष हैंडलिंग आवश्यक |
| सटीकता | हमेशा सटीक | बहुत बड़ी संख्याओं के लिए फ्लोटिंग-पॉइंट सटीकता समस्याएं हो सकती हैं |
| पठनीयता | सरल और स्पष्ट | गणितीय ज्ञान आवश्यक |
सिफारिश
सामान्य उपयोग के लिए, लूप विधि पसंद की जाती है क्योंकि इसकी सादगी, विश्वसनीयता और किनारे के मामलों को संभालने में आसानी होती है। लघुगणक विधि प्रदर्शन-महत्वपूर्ण कोड के लिए उपयोगी है जहां संख्याओं की रेंज ज्ञात और सीमित है।