Слияние двух массивов выдает ошибку - 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
, чтобы перейти на новую строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д