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

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

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

Попробовал написать код слияние 2 массивов. Выдает Ошибку. Не могу понять где. Если есть ошибки в коде, подскажите. =)
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int ar1[5], ar2[5], ar3[10], i, a, b;
  6. printf ("Vvedite 1 massiv - 5 zhisel: ");
  7. for (i=0;i<5;i++)
  8. {
  9. scanf("%d", &ar1[i]);
  10. }
  11. printf ("Vvedite 2 massiv - 5 zhisel: ");
  12. for (a=0;a<5;i++)
  13. {
  14. scanf("%d", &ar2[a]);
  15. }
  16. for (i=0; i<5; i++; a=0; a<5; a++; b=0; b<10; b++)
  17. {
  18. if (ar1[i]<ar2[a])
  19. {
  20. ar3[b]=ar1[i];
  21. }
  22. if (ar2[a]<ar1[i])
  23. {
  24. ar3[b]=ar2[a];
  25. }
  26. }
  27. printf ("Slianie massivov: %d", ar3);
  28. getch();
  29. return 0;
  30. }

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

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

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

В данном коде происходит слияние двух массивов 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы