I am trying to write a program to add large numbers with stacks. However, I do not know how to get each digit on to a stack individually.

This is what I mean:
For example, take the input 3784. How do I get the 3, 7, 8, and 4 as separate numbers so I can push them on to the stack starting with the first position.
The stack needs to look like this:
top:
4
8
7
3
bottom:

I am trying to implement an addingLargeNumbers() function which looks like this:

``````addingLargeNumbers()
read the numerals of the first number and store the numbers corresponding to
them on the stack;
read the numerals of the second number and store the numbers corresponding
to them on another stack;
result = 0;
while(!stack1.empty() || !stack1.empty()) //while at least one stack is not empty
int x = stack1.pop() + stack2.pop();
result.push(x); //pop a number from each nonempty stack and add them to result;
push the unit part on the result stack;
store carry in result;
push carry on the result stack if it is not zero;
pop numbers from the result stack and display them;``````

Not sure if that helps but...

3
Contributors
6
Replies
8
Views
7 Years
Discussion Span
Last Post by Marissak

Depends on the type you're reading..

If you store the user input as string, you can access the individual numbers(characters) just like you would with an array:

``````string test = "12345";
test[0]; // '1'
test[4]; // '5'``````

Would a loop where you take mod 10 then divide by ten work?
i.e

``````while(num>0)
{//some code to add to the stack num%10
num/=10;}``````
yupp

I'm not sure because when I do

``````string ch;
cin>> ch;
int x = 0;
for(int i = 0; i < ch.length(); i++) {
x = x + ch[i];
}

cout << x;``````

using 56 I get 107.

But I'm going to try it in my program and see what happens.

Edited by Marissak: n/a

That's because the ascii value of 5 is 53 and of 6 is 54. 53+54=107.
When casting a char to an int, you get the ascii value of that character.

You're better off using frogboy's suggestion, or substract 48 from ch.

(see www.asciitable.com)

Oh, I didn't realize they had ascii values. My mistake.

The problem is that I need to put each digit on stack1 and then pop the top and add it to the top of stack2 and then put the sum in stack.

But I'm going to try subtracting 48. I'm just concerned I wont be able to add them as integers.

I got it! Thanks for your help:icon_biggrin: