You can use the following approach with the switch statement. Though in my demonstrative program I use only the label default
you may include any case label that corresponds to the enumeration
#include <iostream>
int main()
{
while ( true )
{
enum : unsigned int { One = 1, Two, Three, Four, Five, Six, Seven, Eight, Nine } digits;
std::cout << "Enter a non-negative number (0-exit): ";
unsigned int x = 0;
std::cin >> x;
if ( !x ) break;
int len;
switch ( ( digits = One, x < 10 ) ||
( digits = Two, x < 100 ) ||
( digits = Three, x < 1000 ) ||
( digits = Four, x < 10000 ) ||
( digits = Five, x < 100000 ) ||
( digits = Six, x < 1000000 ) ||
( digits = Seven, x < 10000000 ) ||
( digits = Eight, x < 100000000 ) ||
( digits = Nine, x < 1000000000 ), digits )
{
default:
len = digits;
break;
}
std::cout << x << " has " << len << " digits." << std::endl;
}
}
The program output might look like
Enter a non-negative number (0-exit): 1
1 has 1 digits.
Enter a non-negative number (0-exit): 11
11 has 2 digits.
Enter a non-negative number (0-exit): 111
111 has 3 digits.
Enter a non-negative number (0-exit): 1111
1111 has 4 digits.
Enter a non-negative number (0-exit): 11111
11111 has 5 digits.
Enter a non-negative number (0-exit): 111111
111111 has 6 digits.
Enter a non-negative number (0-exit): 1111111
1111111 has 7 digits.
Enter a non-negative number (0-exit): 11111111
11111111 has 8 digits.
Enter a non-negative number (0-exit): 111111111
111111111 has 9 digits.
Enter a non-negative number (0-exit): 0
An alternative representation of the switch including other case labels
switch ( ( digits = One, x < 10 ) ||
( digits = Two, x < 100 ) ||
( digits = Three, x < 1000 ) ||
( digits = Four, x < 10000 ) ||
( digits = Five, x < 100000 ) ||
( digits = Six, x < 1000000 ) ||
( digits = Seven, x < 10000000 ) ||
( digits = Eight, x < 100000000 ) ||
( digits = Nine, x < 1000000000 ), digits )
{
case One:
std::cout << "You could enter more digits.." << std::endl;
case Two: case Three: case Four: case Five: case Six: case Seven: case Eight:
len = digits;
break;
case Nine:
std::cout << "Do you like money?" << std::endl;
len = digits;
break;
default:
std::cout << "Too big number! It can be never" << std::endl;
break;
}