Problem: Write a C++ program to count the number of digits in a number.
Example:
Input : 249 Output : 3 Input : 7500 Output : 4
The number of times we can divide a number by 10 is the number of digits the number has.
We repeatedly divide the number by 10 (i.e. num=num/10) until it is reduced to zero and meanwhile count the number of divisions to get the count of digits.
#include <iostream>
using namespace std;
int main()
{
int num, count=0;
cout <<"Enter number \n";
cin >> num;
//If number is -ve, convert it to +ve
if(num<0)
num=num*-1;
while(num>0){
num=num/10;
count++;
}
cout <<"Number of Digits: " << count;
return 0;
}
Output:
Enter number7845
Number of Digits: 4
Note: In the program, before starting the counting process we check for negative input. If the input is found negative then we have to multiply it by -1 to convert it to a positive integer.
Explanation:
Initially: num = 7845, count = 0
After the first iteration of while loop: num = 785, count = 1
After the second iteration of while loop: num = 78, count = 2
After the third iteration of while loop: num = 7, count = 3
After the fourth iteration of while loop: num = 0, count = 4
While loop execution end after 4th iteration because num is reduced to 0 therefore the loop condition num>0 fails. The final value of count is 4.