Слияние двух массивов выдает ошибку - 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. При этом элементы исходных массивов сравниваются и выбираются по определенному правилу.
- Объявляются три массива: arrA, arrB и arrC. Массив arrC имеет размер ARRAY_SIZE * 2, так как в результате слияния получается массив в два раза больше исходного размера.
- Задаются начальные значения для трех индексов i, j и k, которые будут использоваться для обхода массивов.
- В цикле 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.
- В цикле for происходит вывод элементов массива arrC на экран через пробел.
- В конце программы выводится символ новой строки
\n
, чтобы перейти на новую строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д