使用Stacks C ++添加两个大数字

时间:2014-01-20 03:04:02

标签: c++ stack stringstream

我正在尝试使用stack<int>添加两个任意大的数字。我的代码有什么问题?

我的resultStack似乎正在获得第一个值,但它丢弃了剩余的数字。

My code can be found here at ideone

以下是我的代码的一部分:

    int carry=0, op1=0, op2=0;
    while (true) {
            op1=0,op2=0;
            if (stack1.empty() && stack2.empty()) break;
            if (!stack1.empty()) { op1 = stack1.top(); stack1.pop(); }
            if (!stack2.empty()) { op2 = stack2.top(); stack2.pop(); }
            int opTotal = 0;
            opTotal = op1 + op2 + carry;
            resultStack.push(opTotal%10);
            if (opTotal >= 10) carry = 1; else carry = 0;
    }

1 个答案:

答案 0 :(得分:0)

而不是使用stringstream进行转换,这会导致您的实施中出现问题,您可以这样做

stack.push(input[i] - '0');

[编辑]测试:http://ideone.com/b2n5l9