Слияние двух массивов выдает ошибку - C (СИ)

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

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

Попробовал написать код слияние 2 массивов. Выдает Ошибку. Не могу понять где. Если есть ошибки в коде, подскажите. =)
#include <stdio.h>

int main()
{
    int ar1[5], ar2[5], ar3[10], i, a, b;
printf ("Vvedite 1 massiv - 5 zhisel:   ");
for (i=0;i<5;i++)
{
scanf("%d", &ar1[i]);
}
printf ("Vvedite 2 massiv - 5 zhisel:   ");
for (a=0;a<5;i++)
{
scanf("%d", &ar2[a]);
}
    for (i=0; i<5; i++; a=0; a<5; a++; b=0; b<10; b++)
        {
        if (ar1[i]<ar2[a])
            {
                ar3[b]=ar1[i];  
            }
        if (ar2[a]<ar1[i])
    {
        ar3[b]=ar2[a];
    }
        }
    printf ("Slianie massivov:  %d", ar3);
    getch();
    return 0;
}

Решение задачи: «Слияние двух массивов выдает ошибку»

textual
Листинг программы
#include <stdio.h>
 
#define ARRAY_SIZE (5)
 
int main(void) {
    int arrA[ARRAY_SIZE] = { 1, 2, 5, 7, 8},
        arrB[ARRAY_SIZE] = { 0, 3, 4, 6, 9},
        arrC[ARRAY_SIZE * 2],
        i, j, k;
        
        i = j = k = 0;
        while ( k < ARRAY_SIZE * 2 ) {
            arrC[k++] = ( i < ARRAY_SIZE && j < ARRAY_SIZE ) ? ( ( arrA[i] < arrB[j] ) ? arrA[i++] : arrB[j++] ) :
                ( i < ARRAY_SIZE ) ? arrA[i++] : arrB[j++];
        }
        
        for ( i = 0; i < ARRAY_SIZE * 2; ++i )
            printf("%d ", arrC[i]);
        
        printf("\n");
}

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

В данном коде происходит слияние двух массивов arrA и arrB в массив arrC. При этом элементы исходных массивов сравниваются и выбираются по определенному правилу.

  1. Объявляются три массива: arrA, arrB и arrC. Массив arrC имеет размер ARRAY_SIZE * 2, так как в результате слияния получается массив в два раза больше исходного размера.
  2. Задаются начальные значения для трех индексов i, j и k, которые будут использоваться для обхода массивов.
  3. В цикле while происходит сравнение и выбор элементов из массивов arrA и arrB. Условие (i < ARRAY_SIZE && j < ARRAY_SIZE) проверяет, что индексы не превышают размер исходных массивов. Если условие выполняется, то происходит сравнение элементов arrA[i] и arrB[j]. Если arrA[i] меньше arrB[j], то в массив arrC записывается arrA[i], иначе arrB[j]. После этого индексы i и j увеличиваются на 1. Если условие не выполняется, то в массив arrC записывается значение arrA[i] или arrB[j], в зависимости от того, какой из индексов больше. После этого индекс i увеличивается на 1.
  4. В цикле for происходит вывод элементов массива arrC на экран через пробел.
  5. В конце программы выводится символ новой строки \n, чтобы перейти на новую строку.

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


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

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

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