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.