Сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы - 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, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д