Тема: Допоможіть з завданням по довгій арифметиці ( помилка у моїй програмі)
#include <iostream>
#include <string>
int read_long(int *a) {
std::string c;
std::cin >> c;
int num = -1;
for(int i = c.size() - 1; i >= 0; i--) {
num++;
a[num] = c[i] - '0';
}
return c.size();
}
int sum(int *a, int *b, int *c, int size_a, int size_b) {
int size = std::max(size_a, size_b);
for(int i = 0; i < size; i++) {
c[i] += a[i] + b[i]; // знаходимо суму останніх розрядів
c[i + 1] += a[i] + b[i]; // якщо є розряд для переходу
c[i + 1] /= 10; // відсікаємо розряд якщо є
c[i] %= 10;
}
if(c[size] == 0) size--;
return size;
}
int main() {
int a[250], b[250], c[251];
int size_a = read_long(a); // повертає довжину масива першого довгого числа, а також вводить в нього цифри довгого числа задом на перед
int size_b = read_long(b); // теж саме з другим числом
int kol = sum(a, b, c, size_a, size_b); // повертає довжину масива суми і сам масив
for(int i = kol; i >= 0; i--) std::cout << c[i]; // виводить сам масив - суму з кінця
return 0;
}
Дано два великих числа. Потрібно вивести їх суму. У самій програмі постарався докладно описати кожен крок. З одного боку, введення великих чисел правильний, але щось не так з функцією їх суми або висновком. Помилку знайти не зміг = (.