Другие языки программирования и технологии

Помогите пожалуйста решить задачу в c++!!

#include <fstream>
#include <iostream>
#include <string>
#include <stack>
using namespace std;
void file_error() {
setlocale(LC_CTYPE, "Russian");
cerr << "Файл numbers.txt не найден или повреждён! \n";
cin.get();
}
int main() {
ifstream inp("long_numbers.txt");
if (inp.is_open() && !inp.bad()) {
string a, b;
inp >> a >> b;
stack<int> ax, bx, sum;
for (auto x : a) ax.push(x - 48);
for (auto x : b) bx.push(x - 48);
auto n = 0;;
while (true) {
auto s = n;
if (!ax.empty()) {
s += ax.top();
ax.pop();
}
if (!bx.empty()) {
s += bx.top();
bx.pop();
}
if (s < 10) {
sum.push(s);
n = 0;
} else {
sum.push(s % 10);
n = 1;
}
if (!n && ax.empty() && bx.empty()) break;
}
inp.close();
ofstream out("long_numbers.txt", ios::app);
if (out.is_open() && !out.bad()) {
out << ' ';
while (!sum.empty()) {
out << sum.top();
sum.pop();
}
out.close();
} else file_error();
} else file_error();
}
Максим Беседин
Максим Беседин
60 989
Лучший ответ
на сколько большие? это длинная арифметика?

// определяем длину массива суммы
if (size_a > size_b)
length = size_a + 1;
else
length = size_b + 1;

for (int ix = 0; ix < length; ix++)
{
b[ix] += a[ix]; // суммируем последние разряды чисел
b[ix + 1] += (b[ix] / 10); // если есть разряд для переноса, переносим его в следующий разряд
b[ix] %= 10; // если есть разряд для переноса он отсекается
}

if (b[length - 1] == 0)
length--;

и затем iostream out(ios::open|ios::app);
out<<b[i];
Михаил Т
Михаил Т
22 008