+ 1

how to extract digits beginning from the first digit ?

4th Oct 2017, 8:54 AM
Aindrila Rakshit
3 ответов
+ 4
Here's a little program to treat an integer like an array. You can get the digit at its index (zero based). #include <iostream> #include <stdexcept> #include <sstream> using namespace std; int getNumberOfDigits(int number) { int length = 1; while((number /= 10) != 0){ ++length; } return length; } int getDigitAtIndex(int number, int index) { int numAtIndex = 0; int count = getNumberOfDigits(number) - index; if(index < 0 || count <= 0) { stringstream str; str << "Index of " << index << " is out of range"; throw out_of_range(str.str()); } for(int i = count; i > 0; --i) { numAtIndex = number % 10; number /= 10; } return numAtIndex; } int main() { int number = 12345; cout << getDigitAtIndex(number, 0); return 0; }
4th Oct 2017, 10:39 AM
ChaoticDawg
ChaoticDawg - avatar
+ 5
The striaght-forward/naive way would be keep dividing the integer by 10 and get the last non-zero quotient. 567 ÷ 10 = 56 56 ÷ 10 = 5 ⬅ 5 ÷ 10 = 0
4th Oct 2017, 9:01 AM
Zephyr Koo
Zephyr Koo - avatar
0
yep as he ☝said for getting from back a[ i ]=n%10; n/10; or to get from front while(size){ a[ i ] = n/exp(10, --size); n-=exp(10,size+1);} here size is no. of digits in n
4th Oct 2017, 9:12 AM
Morpheus
Morpheus - avatar