Записать две таблицы, затем вывести на экран третюю(их сложение) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день Суть задания - написать программу, которая позволяет ввести произволньое кол-во чисел в таблицу, потом во вторую; Затем выписывает третюю, что является их сложением.

Не по теме:

Сложение - не сумма; Сложение слов пиво, водка = пивоводка.

Просьба состоит в том, чтоб найти ошибку в моём коде. Как я понял, что-то не так с записью в таблицы, т.к. не выписывает их. Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int *fTab, *sTab, *eTab, i, j, k, kk, ek, ekk, ti, tj;
 
fTab= (int*) malloc (1*sizeof(int));
sTab= (int*) malloc (1*sizeof(int));
 
printf("\n\tStart entering the first tab. \n\tTo stop input \"5555\"\n");
 
for(i=1; i; i++)
{
        printf("\nInput %d number: ", i);
        scanf("%d", &fTab[i]);
        if (fTab[i]==5555)
        {
                fTab[i]=0;
                i--;
                break;
        }
        else
        {
                fTab=(int*)realloc(fTab, i * sizeof(int));
        }
 
}
 
printf("\n\tStart entering the second tab. \n\tTo stop input \"5555\"\n");
 
for (j=1; j; j++)
{
        printf("\nInput %d number: ", j);
        scanf("%d", &sTab[j]);
        if (sTab[j]==5555)
        {
                sTab[j]=0;
                j--;
                break;
        }
        else
        {
                sTab=(int*)realloc(sTab, j * sizeof(int));
        }
}
 
printf("\n\tThe first tab is: \n");
 
for (ti=i; ti<=1; ti--)
{
        printf("\n%d", fTab[ti]);
}
 
printf("\n\tThe second tab is: \n");
 
for (tj=j; tj<=1; tj--)
{
        printf("\n%d", sTab[tj]);
}
 
printf("\n\tLet's find out, what we've got.\n");
 
eTab=(int*)malloc(i+j);
 
k=i;
 
for(i=1; i<=k; i++)
{
        eTab[i]=fTab[i];
}
 
kk=j+k;
 
for(j=k; j<=kk; j++)
{
        eTab[j]=sTab[j];
}
 
ek=kk;
 
for(ekk=1; ekk<=kk; ekk++)
{
        printf("\n%d number of output tab is: %d", ekk, eTab[ekk]);
}
 
printf("\n\n\tTHE END\n");
 
return 0;
}

Решение задачи: «Записать две таблицы, затем вывести на экран третюю(их сложение)»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int *fTab, *sTab, *eTab, i, j, k, kk, ek, ekk, ti, tj;
 
fTab= (int*) malloc (1*sizeof(int));
sTab= (int*) malloc (1*sizeof(int));
 
printf("\n\tStart entering the first tab. \n\tTo stop input \"5555\"\n");
 
for(i=0; ; i++)
{
        printf("\nInput %d number: ", i);
        scanf("%d", &fTab[i]);
        if (fTab[i]==5555)
        {
                fTab[i]=0;
                i--;
                break;
        }
        else
        {
                fTab=(int*)realloc(fTab, (i+2) * sizeof(int));
        }
 
}
 
printf("\n\tStart entering the second tab. \n\tTo stop input \"5555\"\n");
 
for (j=0; ; j++)
{
        printf("\nInput %d number: ", j);
        scanf("%d", &sTab[j]);
        if (sTab[j]==5555)
        {
                sTab[j]=0;
                j--;
                break;
        }
        else
        {
                sTab=(int*)realloc(sTab, (j+2) * sizeof(int));
        }
}
 
printf("\n\tThe first tab is: \n");
 
for (ti=i; ti>=0; ti--)
{
        printf("\n%d", fTab[ti]);
}
 
printf("\n\tThe second tab is: \n");
 
for (tj=j; tj>=0; tj--)
{
        printf("\n%d", sTab[tj]);
}
 
printf("\n\tLet's find out, what we've got.\n");
 
eTab=(int*)malloc(i+j+2);
 
k=i;
 
for(i=0; i<=k; i++)
{
        eTab[i]=fTab[i];
}
 
for(i=0; i<=j; i++)
{
        eTab[i+k+1]=sTab[i];
}
 
for(ekk=0; ekk<k+j+2; ekk++)
{
        printf("\n%d number of output tab is: %d", ekk, eTab[ekk]);
}
 
printf("\n\n\tTHE END\n");
 
return 0;
}

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

  1. Описание переменных:
    • fTab, sTab, eTab - указатели на массивы целых чисел
    • i, j, k, kk, ek, ekk - целочисленные переменные для подсчёта количества элементов в массивах
    • ti, tj - целочисленные переменные для подсчёта количества элементов в массивах при выводе
    • ekk - целочисленная переменная для подсчёта количества элементов в итоговом массиве
    • 5555 - строка, вводимая пользователем для прекращения ввода чисел в массив
  2. Цель программы: Запись первых двух таблиц (каждая таблица представлена в виде массива целых чисел), а затем вывод на экран суммы этих двух таблиц (результат записан в итоговый массив).
  3. Ход работы программы:
    • Ввод данных в первые два массива до тех пор, пока пользователь не введёт число 5555 для прекращения ввода (используется цикл for с условием)
    • Вывод на экран первых двух таблиц (используются два цикла for с условием)
    • Выделение памяти под итоговый массив, равный сумме размеров первых двух массивов
    • Копирование данных из первых двух массивов в итоговый (используются два цикла for)
    • Вывод на экран итогового массива (используется цикл for)
    • Завершение программы (возврат 0)

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


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

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

13   голосов , оценка 3.769 из 5
Похожие ответы