Два упорядоченных по убыванию массива записать в третий - C (СИ)
Формулировка задачи:
Ввести два упорядоченных по убыванию массива. С помощью функции занести их в третий, упорядоченный по возрастанию. Сортировки не использовать.
Решение задачи: «Два упорядоченных по убыванию массива записать в третий»
textual
Листинг программы
#include <stdio.h> void reverse_merge(int * dst, int * srcA, size_t sizeA, int * srcB, size_t sizeB) { if ( ! sizeA ) { if ( ! sizeB ) return; *dst++ = srcB[--sizeB]; } else if ( ! sizeB ) *dst++ = srcA[--sizeA]; else if ( srcA[sizeA - 1] < srcB[sizeB - 1] ) *dst++ = srcA[--sizeA]; else *dst++ = srcB[--sizeB]; reverse_merge(dst, srcA, sizeA, srcB, sizeB); } void dump(const int * arr, size_t cnt) { while ( cnt-- ) printf("%d%c", *arr++, ( cnt ) ? ' ' : '\n'); } #define SIZE (10) int main(void) { int A[SIZE] = { 39, 35, 34, 31, 28, 25, 24, 21, 19, 15 }; int B[SIZE] = { 44, 40, 37, 31, 28, 23, 22, 20, 17, 17 }; int C[SIZE * 2]; reverse_merge(C, A, SIZE, B, SIZE); printf("A: "); dump(A, SIZE); printf("B: "); dump(B, SIZE); printf("C: "); dump(C, SIZE * 2); return 0; }
Объяснение кода листинга программы
В данном коде решается задача объединения двух упорядоченных по убыванию массивов в один.
- Создаются три массива: A, B и C. Массивы A и B содержат элементы, которые необходимо упорядочить. Массив C будет результатом объединения.
- В функции reverse_merge происходит объединение массивов. Она принимает три параметра:
- dst - указатель на первый элемент результирующего массива.
- srcA - указатель на первый элемент первого массива.
- sizeA - размер первого массива.
- srcB - указатель на первый элемент второго массива.
- sizeB - размер второго массива. Внутри функции происходит итеративное объединение массивов. Если один из массивов закончился (sizeA или sizeB равны 0), то все оставшиеся элементы копируются из другого массива. Если элементы в обоих массивах равны, то выбирается элемент из левого массива. Если элементы не равны, то выбирается элемент из правого массива.
- В функции dump происходит вывод содержимого массива на экран. Она принимает два параметра:
- arr - указатель на первый элемент массива.
- cnt - количество элементов массива. Внутри функции происходит итеративное выведение элементов массива на экран. Если элемент равен 0, то выводится символ новой строки.
- В функции main создаются два массива: A и B. Значения элементов массивов задаются вручную.
- Создается массив C размером SIZE * 2.
- Вызывается функция reverse_merge, передавая в нее указатель на первый элемент массива C, указатель на первый элемент массива A и размер массива A, указатель на первый элемент массива B и размер массива B.
- Выводятся значения массивов A, B и C.
- Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д