
Другие языки программирования и технологии
Помогите пожалуйста решить задачу в 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();
}
#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();
}
на сколько большие? это длинная арифметика?
// определяем длину массива суммы
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];
// определяем длину массива суммы
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];
Похожие вопросы
- Помогите, пожалуйста, решить задачу в c++!!
- Помогите пожалуйста решить задачу на C.
- Помогите, пожалуйста, решить задачу на c++.
- Помогите пожалуйста решить на языке C++
- помогите пожалуйста решить задачу по работе компьютера!
- Програмрование C# .Помогите пожалуйста решить задачу . Бьюсь головой об экран уже ...
- Помогите, пожалуйста, решить задачу на языке C++
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите,пожалуйста,решить задачу в Паскале.
- Pascal. Помогите пожалуйста решить задачу в паскале !