Сложение двух многозначных положительных чисел, помещая цифры слагаемых и результат сложения в массивы - 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;
}

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

  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
Похожие ответы