Сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы - 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 Я разобрался немного с циклами,массивами и т.п. Но могу сложить только соответствующие значения массивов .
Листинг программы
  1. int main(void)
  2. {
  3. char A[18] = { 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9 };
  4. char B[18] = { 9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1 };
  5. for (char i = 0; i < 18; i++)
  6. {
  7. printf("A[%d]+B[%d]=%d \n",i , i , A[i] + B[i]);
  8. }
  9.  
  10. _getch();
  11. return 0;
  12. }
Вот он весь мой бред-это сложение соотв. элементов . Подскажите пожалуйста ! Старался подробно описать проблему . Спасибо

Решение задачи: «Сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. const int N = 18;
  4. int main()
  5. {
  6.     int A[18] = { 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9 };
  7.     int B[18] = { 9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1 };
  8.     int i, j = N, zn = 0, C[N + 1];
  9.     for(i = N - 1; i >= 0; --i, --j){
  10.         C[j] = A[i] + B[i] + zn;
  11.         if(C[j] >= 10){
  12.             zn = C[j] / 10;
  13.             C[j] = C[j] % 10;
  14.         }
  15.         else
  16.             zn = 0;
  17.     }
  18.     C[0] = zn;
  19.     printf(" ");
  20.     for(i = 0; i < N; ++i)
  21.         printf("%d", A[i]);
  22.     printf("\n+\n");
  23.     printf(" ");
  24.     for(i = 0; i < N; ++i)
  25.         printf("%d", B[i]);
  26.     printf("\n=\n");
  27.     for(i = 0; i <= N; ++i)
  28.         printf("%d", C[i]);
  29.     return 0;
  30. }

Объяснение кода листинга программы

  1. Объявляются два массива A и B, каждый из которых содержит 18 элементов.
  2. В массиве C выделяется память под 19 элементов (N + 1).
  3. Переменная i инициализируется значением N-1, а переменная j инициализируется значением N.
  4. Переменная zn инициализируется значением 0.
  5. Цикл for выполняется от N-1 до 0.
  6. В каждой итерации цикла переменная C[j] присваивается значение суммы A[i] и B[i], а также значение zn.
  7. Если значение C[j] больше или равно 10, то значение zn присваивается целочисленной части от деления C[j] на 10, а C[j] присваивается остатку от деления C[j] на 10.
  8. Если значение C[j] меньше 10, то значение zn присваивается 0.
  9. После цикла for значение zn присваивается первому элементу массива C (C[0]).
  10. Выводится строка .
  11. Затем выводятся все элементы массива A с помощью цикла for и функции printf.
  12. Выводится строка \n+.
  13. Затем выводятся все элементы массива B с помощью цикла for и функции printf.
  14. Выводится строка \n=.
  15. Затем выводятся все элементы массива C с помощью цикла for и функции printf.
  16. Программа возвращает 0, что означает успешное завершение работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы