2014-01-20 43 views
0

我試圖用stack<int>添加兩個任意大的數字。我的代碼有什麼問題?使用堆棧添加兩個大號C++

我的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; 
    } 
+0

所以輸入在堆棧頂部有最不重要的數字,但輸出在頂部有最重要的數字? –

+0

@brianbeuning但這應該沒關係。最後你可以扭轉堆疊,你會沒事的。 – Gasim

+0

@DiscreteGenius多數民衆贊成那是因爲你的stack1和stack2沒有得到正確的值,除了第一個。 – Gasim

回答

0

而不是使用stringstream轉換,它的方式引起你的執行的問題,你可以做

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

[編輯]測試:http://ideone.com/b2n5l9