2014-01-20 5 views
0

Я пытаюсь добавить два произвольно больших числа, используя stack<int>. В чем проблема с моим кодом?Добавление двух больших чисел с использованием стеков C++

У меня получилось, что первое значение имеет правильное значение, но оно отбрасывает оставшиеся цифры.

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 thats, потому что ваши stack1 и stack2 не получают значения правильно, кроме первого. – Gasim

ответ

0

Вместо использования stringstream для преобразования, которые, кстати, вызвало проблемы в вашей реализации, вы можете просто сделать

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

[EDIT] Испытание: http://ideone.com/b2n5l9

Смежные вопросы