// Задание 1 // Написать программу для сложения и вычитания двух больших чисел в // столбик. Для представления чисел использовать массив, в котором будут // храниться цифры числа. При реализации процедуры вычитания // предпочтительно из большего вычитать меньшее. Для этого // первоначально определять, какое из двух чисел больше #include int* sum(int *a, int *b, int size) { // a - первое число // b - второе число // size - длина числа // Инициализируем массив для хранения результирующего числа с длиной size // ************************************************************************ // *ВНИМАНИЕ! Скобки на конце инициализируют массив нулями! ЭТО ВАЖНО! // *В Windows массив может изначально содержать биты, неочищенные из памяти // *после работы других программ, что приведет непредвиденным последствиям! // ************************************************************************ int *result = new int[size](); // Выполняем поразрядное сложение for (int i = size - 1; i >= 0; i--) { int sum = a[i] + b[i]; result[i] = sum % 10; // Помещаем то, что оказалось меньше 10, в текущий разряд if(i - 1 >= 0 && sum >= 10) // Избегаем вставку в следующий разряд при переполнении { b[i - 1] = b[i - 1] + sum / 10; // Помещаем то, что оказалось больше 10, в следующий разряд } } // Возвращаем результирующий массив return result; } int main() { std::setlocale(LC_ALL, "ru"); int size; int *a; int *b; std::cout << "Максимально предусматриваемая длина числа: "; std::cin >> size; // Инициализируем массивы чисел. Все элементы аналогично инициализируем нулями a = new int[size](); b = new int[size](); std::cout << "Введите первое число: "; for (int i = 0; i < size; i++) { std::cin >> a[i]; } std::cout << "Введите второе число: "; for (int i = 0; i < size; i++) { std::cin >> b[i]; } int *result = sum(a, b, size); std::cout << "Результат сложения: "; for (int i = 0; i < size; i++) { std::cout << result[i] << " "; } std::cout << std::endl; return 0; }