Я пытаюсь добавить два произвольно больших числа, используя 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;
}
Таким образом, вход имеет наименьшую значащую цифру в верхней части стека, но на выходе есть самая значительная цифра сверху? –
@brianbeuning, но это не имеет значения. В конце вы можете перевернуть стек, и все будет хорошо. – Gasim
@DiscreteGenius thats, потому что ваши stack1 и stack2 не получают значения правильно, кроме первого. – Gasim