// Задание 4 // Написать программу для умножения двух больших чисел столбиком. // Обратите внимание на количество цифр в произведении: их скорее всего // будет больше, чем в исходных числах #include void printArray(int* arr, int size) { // Печать массива, пропуская ведущие нули bool leadingZero = true; for (int i = 0; i < size; i++) { if (arr[i] != 0) { leadingZero = false; } if (!leadingZero) { std::cout << arr[i]; } } if (leadingZero) { std::cout << "0"; // Если все нули } std::cout << std::endl; } int* multiplyDecimal(int* A, int sizeA, int* B, int sizeB, int& resultSize) { resultSize = sizeA + sizeB; // Максимально возможный размер результата int* result = new int[resultSize](); // Инициализируем массив нулями // Умножаем каждую цифру первого числа на каждую цифру второго числа for (int i = sizeA - 1; i >= 0; i--) { for (int j = sizeB - 1; j >= 0; j--) { int product = A[i] * B[j]; int sum = product + result[i + j + 1]; // Добавляем к текущему разряду результата result[i + j + 1] = sum % 10; // Текущий разряд result[i + j] += sum / 10; // Перенос } } return result; } int main() { std::setlocale(LC_ALL, "ru"); int sizeA, sizeB; std::cout << "Введите длину первого числа: "; std::cin >> sizeA; int* A = new int[sizeA]; std::cout << "Введите первое число (цифры от 0 до 9): "; for (int i = 0; i < sizeA; i++) { std::cin >> A[i]; } std::cout << "Введите длину второго числа: "; std::cin >> sizeB; int* B = new int[sizeB]; std::cout << "Введите второе число (цифры от 0 до 9): "; for (int i = 0; i < sizeB; i++) { std::cin >> B[i]; } int resultSize; int* result = multiplyDecimal(A, sizeA, B, sizeB, resultSize); std::cout << "Результат умножения: "; printArray(result, resultSize); // Освобождаем память delete[] A; delete[] B; delete[] result; return 0; }