// Задание 3 // В задании 2 была реализована идея ускорения суммирования двоичных // чисел. Реализуйте сложение десятичных чисел с использованием // подобного механизма ускорения. #include int* addDecimal(int* A, int* B, int size) { int* result = new int[size + 1](); // Результат может быть на 1 разряд больше int carry = 0; // Перенос for (int i = size - 1; i >= 0; i--) { // Сложение с учетом переноса int sum = A[i] + B[i] + carry; // Сложение result[i + 1] = sum % 10; // Текущий разряд carry = sum / 10; // Перенос } result[0] = carry; // Записываем перенос в старший разряд return result; } int main() { std::setlocale(LC_ALL, "ru"); int size; std::cout << "Введите длину десятичных чисел: "; std::cin >> size; int* a = new int[size](); int* b = new int[size](); std::cout << "Введите первое десятичное число (цифры от 0 до 9): "; for (int i = 0; i < size; i++) { std::cin >> a[i]; } std::cout << "Введите второе десятичное число (цифры от 0 до 9): "; for (int i = 0; i < size; i++) { std::cin >> b[i]; } int* result = addDecimal(a, b, size); std::cout << "Результат сложения: "; for (int i = 0; i < size + 1; i++) { std::cout << result[i] << " "; } std::cout << std::endl; // Освобождаем память delete[] a; delete[] b; delete[] result; return 0; }