Introduction :
In this tutorial, we will learn how to count the total digits in a number in C++. The program will ask the user to enter the number. It will count the digits and print it out. We will learn different ways to solve this problem.
Method 1: Using a loop :
If we divide one integer by 10, it’s rightmost digit is removed. e.g. 122/10 is 12. We can keep dividing the number until it becomes 0. For example, we can divide 1234 four times until it becomes 0. Using a loop, the program will keep dividing the number by 10 and one variable will keep the count.
The final C++ program is :
#include <iostream>
using namespace std;
int main()
{
//1
int number;
int total = 0;
//2
cout << "Enter a number : " << endl; cin >> number;
//3
while (number != 0)
{
total++;
number = number / 10;
}
//4
cout << "Total digits in the number : " << total << endl;
return 0;
}
Explanation :
The commented numbers in the above program denote the step numbers below :
-
Create two integer variables. One to store the user-provided number and the other to store the total digit count.
-
Ask the user to enter a number. Read and store it in a variable number.
-
Run one while loop. This loop will run until the value of number becomes 0. On each iteration of the loop, increment the value of total by 1 and change the value of number to number/10.
-
Finally, once the loop is completed, print the total digits count i.e. the value of total.
Sample output :
Enter a number :
12567
Total digits in the number : 5
Recursive method :
We can also calculate the total count recursively. In a recursive approach, the same method is called again and again.
#include <iostream>
using namespace std;
int findTotalCount(int number)
{
if (number == 0)
{
return 0;
}
return 1 + findTotalCount(number / 10);
}
int main()
{
int number;
cout << "Enter a number : " << endl; cin >> number;
cout << "Total digits in the number : " << findTotalCount(number) << endl;
return 0;
}
Here, we are calling the findTotalCount method recursively. It takes one parameter number. If the value of number is 0, it returns 0. Else, it calls the same method and increases the current count by 1.
It will produce the same output as the previous example.
By converting to a string :
This is a quick and easy method. C++ string comes with one inbuilt method to find the length. Also, we can convert an integer to a string using the to_string method provides in string header. That’s it. Just convert the number to a string and find out the length of that string :
#include <iostream>
#include <string>
using namespace std;
int main()
{
int number;
cout << "Enter a number : " << endl; cin >> number;
cout << "Total digits in the number : " << to_string(number).size()<< endl;
return 0;
}
It will print the same output.
Using log :
Another quick way to find out the total digits. We can find out the round of log10 value of the number and add 1 to it to find out the count :
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int number;
cout << "Enter a number : " << endl; cin >> number;
cout << "Total digits in the number : " << 1 + floor(log10(number)) << endl;
return 0;
}