Repeatedly divide the number by 10 and store the remainder (the modulo).
By way of an example, if the number were 12345:
12345 % 10 = 5 (first digit)
12345 / 10 = 1234
1234 % 10 = 4 (second digit)
1234 / 10 = 123
123 % 10 = 3 (third digit)
123 / 10 = 12
12 % 10 = 2 (fourth digit)
12 / 10 = 1 (fifth digit)
This algorithm forms the basis of number reversals. The following function demonstrates the most efficient way of reversing any number in the range -2,147,483,648 to 2,147,483,647, inclusive.
int RevNum( int num )
{
const int base = 10;
int result = 0;
int remain = 0;
do
{
remain = num % base;
result *= base;
result += remain;
} while( num /= base);
return( result );
}
Chat with our AI personalities
(C and Lisp, ... data type") was adopted by many later languages, such as ALGOL 68 (1970), Java, and C#. ... C++ has a separate Boolean data type ( 'bool' ), but with automatic conversions from ... "Report on the Algorithmic Language ALGOL 68
Use the following function to count the number of digits in a string. size_t count_digits (const std::string& str) { size_t count = 0; for (std::string::const_iterator it=str.begin(); it!=str.end(); ++it) { const char& c = *it; if (c>='0' && c<='9'); ++count; } return count; }
The need to declare header files is not compulsory in C++. You may place all your code in a single source file if you so desire. However, header files are useful in that they separate interface from implementation and aid in hiding information.
C: there are no methods in C. C++: no.
If you know that the number input will always be three digits: output = 10 * (int)(input / 100) + (input % 10); If you want to idiot proof it (eg. too many digits): output = 10 * (int)((input % 1000) / 100) + (input % 10);