![]() |
![]() |
#1 (permalink) |
Crazy
Location: Arnold, MD
|
[c++]Large int into single #'s
How would I convert a larger int. ex: 8790278573 into single numbers so that I can find the sum of the int. I need 8790278573 to turn into 8 7 9 0 2 7 8 5 7 3, so that I can add them together and find the sum. Any ideas on how I should do that?
|
![]() |
![]() |
#2 (permalink) |
Insane
Location: Wales, UK, Europe, Earth, Milky Way, Universe
|
I've knocked together a little solution which works with int's but i'm afraid 8790278573 doesnt fit in an int (on my computer at least). You can see the method i used anyway:
Code:
#include<iostream> using namespace std; int main() { int i = 790278573; // Number you want to add the digits of int icopy = i; int result = 0; while(icopy > 0) { result += icopy % 10; icopy /= 10; } cout << "Initial number: " << i << "\n"; cout << "Sum of digits : " << result << "\n"; } Hope this helps anyway
__________________
There are only two industries that refer to their customers as "users". - Edward Tufte |
![]() |
![]() |
#4 (permalink) | |
Insane
Location: Wales, UK, Europe, Earth, Milky Way, Universe
|
Quote:
Anyway, my solution should work fine for that big number. I still cant think of a better way to do it...
__________________
There are only two industries that refer to their customers as "users". - Edward Tufte |
|
![]() |
![]() |
#5 (permalink) |
Upright
|
I swear, you guys are making this way too hard.
Code:
int main() { char *strBignum = "790278573\0"; int i,sum=0; for(i=0; i<strlen(strBignum); i++) { sum += (int)(strBignum[i]-'0'); } cout << "The sum is: " << sum <<endl; } |
![]() |
![]() |
#6 (permalink) |
Crazy
|
That's a good one, bacon. The hardest part is getting the ascii math right.
You can even make it simpler (I like to make things as simple as possible): Code:
int main() { char *p = "8790278573"; int s = 0; while (*p) s += *p++ - '0'; cout << "sum " << s << endl; }
__________________
I want no escape. |
![]() |
![]() |
#7 (permalink) |
Insane
Location: Wales, UK, Europe, Earth, Milky Way, Universe
|
Nice one roboshark, very elegant. Have to say i was trying to stick to ints because j0hnb specified ints in his question but yours seems a much better way of doing it.
__________________
There are only two industries that refer to their customers as "users". - Edward Tufte |
![]() |
![]() |
#8 (permalink) | |
Crazy
|
Quote:
However, don't knock your solution completely. If the input can be represented as a string (such as reading the number from the command line), a solution such as bacon's or mine would be the best one. However, if the input is already in integer form (though the integer the OP specified won't fit into a 32 bit integer), then a solution along the lines you've presented will be the only choice. And yours looks pretty elegant to me!
__________________
I want no escape. |
|
![]() |
![]() |
#10 (permalink) |
Insane
Location: Wales, UK, Europe, Earth, Milky Way, Universe
|
robo: thanks for the kind words
![]() You know, If we tweak this any more its gonna be totally unreadable! Heh, i never knew you could go to the next character in a *char by using ++. Ya learn something new every day ![]() Anyway, i think j0hnb should have his answer now *pats us all on the back* I wonder where he went...
__________________
There are only two industries that refer to their customers as "users". - Edward Tufte |
![]() |
Tags |
int, large, single |
|
|