Сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы - C (СИ)
Формулировка задачи:
Всем привет . Возникла проблемка с языком Си . В Универе задали делать лабу по этому языку . Нам ничего не объяснили , сказали на самообучение все вам . И вот я выбрал легкий уровень задания .
Вот само задание : Произведите сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы: C(K) = A(M) + B(N).
Тесты и результаты
1) А= 112233445566778899; В= 998877665544332211;
А + В = 1111111111111110000.
И что необходимо сделать:
Формат входных данных. [M] [1-й элемент массива A – старший разряд] [2-й элемент массива A] и т.д. [N] [1-й элемент массива B] [2-й элемент массива B] и т.д. Элементы массивов – целые числа в диапазоне [0, 9]. M, N - целые числа в диапазоне [2, 20].
Формат выходных данных. [1-й элемент массива С – старший разряд] [пробел] [2-й элемент массива С] и т.д.
Рекомендуемое кол-во циклических операторов (без ввода и вывода данных): 1
Я разобрался немного с циклами,массивами и т.п. Но могу сложить только соответствующие значения массивов .
Вот он весь мой бред-это сложение соотв. элементов . Подскажите пожалуйста ! Старался подробно описать проблему . Спасибо
int main(void) { char A[18] = { 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9 }; char B[18] = { 9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1 }; for (char i = 0; i < 18; i++) { printf("A[%d]+B[%d]=%d \n",i , i , A[i] + B[i]); } _getch(); return 0; }
Решение задачи: «Сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> const int N = 18; int main() { int A[18] = { 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9 }; int B[18] = { 9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1 }; int i, j = N, zn = 0, C[N + 1]; for(i = N - 1; i >= 0; --i, --j){ C[j] = A[i] + B[i] + zn; if(C[j] >= 10){ zn = C[j] / 10; C[j] = C[j] % 10; } else zn = 0; } C[0] = zn; printf(" "); for(i = 0; i < N; ++i) printf("%d", A[i]); printf("\n+\n"); printf(" "); for(i = 0; i < N; ++i) printf("%d", B[i]); printf("\n=\n"); for(i = 0; i <= N; ++i) printf("%d", C[i]); return 0; }
Объяснение кода листинга программы
- Объявляются два массива A и B, каждый из которых содержит 18 элементов.
- В массиве C выделяется память под 19 элементов (N + 1).
- Переменная i инициализируется значением N-1, а переменная j инициализируется значением N.
- Переменная zn инициализируется значением 0.
- Цикл for выполняется от N-1 до 0.
- В каждой итерации цикла переменная C[j] присваивается значение суммы A[i] и B[i], а также значение zn.
- Если значение C[j] больше или равно 10, то значение zn присваивается целочисленной части от деления C[j] на 10, а C[j] присваивается остатку от деления C[j] на 10.
- Если значение C[j] меньше 10, то значение zn присваивается 0.
- После цикла for значение zn присваивается первому элементу массива C (C[0]).
- Выводится строка
- Затем выводятся все элементы массива A с помощью цикла for и функции printf.
- Выводится строка
\n+
. - Затем выводятся все элементы массива B с помощью цикла for и функции printf.
- Выводится строка
\n=
. - Затем выводятся все элементы массива C с помощью цикла for и функции printf.
- Программа возвращает 0, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д