Объединение двух массивов - C (СИ)
Формулировка задачи:
Здравствуйте, нужна помощь с программой на Си.
"Даны два массива х и y, элементы каждого из которых упорядочены по неубыванию. Объединить элементы этих двух массивов в один массив z, так, чтобы они снова оказались упорядоченными по неубыванию."
Я её сделал, но её не приняли, так как я использовал сортировку пузырьком. Нужно без сортировок, используя факт того, что они изначально упорядочены по не убыванию. И элементы должны повторяться. Т.е. пусть А=1,2,3. B=1,2,3,4,5. Тогда С=1,1,2,2,3,3,4,5.
Решение задачи: «Объединение двух массивов»
textual
Листинг программы
#include <stdio.h> #define SIZE(x) (sizeof(x) / sizeof((x)[0])) int main() { int a[] = {1,2,3}; int b[] = {1,2,3,4,5}; int c[SIZE(a) + SIZE(b)]; int i = 0; int j = 0; int k = 0; while (i < SIZE(a) && j < SIZE(b)) { c[k++] = a[i] < b[j] ? a[i++] : b[j++]; } while (i < SIZE(a)) c[k++] = b[i++]; while (j < SIZE(b)) c[k++] = b[j++]; for (i=0; i < SIZE(c); i++) printf("%d ", c[i]); printf("\n"); return 0; }
Объяснение кода листинга программы
Объединение двух массивов:
- #include
— подключаем стандартную библиотеку для работы с файлами и выводом данных - #define SIZE(x) (sizeof(x) / sizeof((x)[0])) — определяем размер массива x (количество элементов в нем)
- int main() { — функция main() является точкой входа в программу
- int a[] = {1,2,3}; — объявляем первый массив a с тремя элементами {1,2,3}
- int b[] = {1,2,3,4,5}; — объявляем второй массив b с пятью элементами {1,2,3,4,5}
- int c[SIZE(a) + SIZE(b)]; — объявляем третий массив c, который будет объединять элементы из a и b. Размер этого массива суммарный размер a и b.
- int i = 0; — объявляем переменную i для подсчета элементов в массиве a
- int j = 0; — объявляем переменную j для подсчета элементов в массиве b
- int k = 0; — объявляем переменную k для подсчета элементов в массиве c
- while (i < SIZE(a) && j < SIZE(b)) { — цикл while будет выполняться до тех пор, пока i меньше размера массива a и j меньше размера массива b
- c[k++] = a[i] < b[j] ? a[i++] : b[j++]; — добавляем в массив c элемент, который меньше (по умолчанию сравниваем первым элементом) и переходим к следующему элементу в массиве a и b
- while (i < SIZE(a)) c[k++] = b[i++]; — добавляем оставшиеся элементы из массива a в массив c
- while (j < SIZE(b)) c[k++] = b[j++]; — добавляем оставшиеся элементы из массива b в массив c
- for (i=0; i < SIZE(c); i++) printf(
%d
, c[i]); — выводим все элементы массива c через пробел - printf(
\n
); — выводим символ новой строки - return 0; — функция main() возвращает 0, что означает успешное выполнение программы
- В результате выполнения программы на экран будет выведен объединенный массив c: 1 2 3 4 5
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д