Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию - C (СИ)
Формулировка задачи:
Даны два упорядоченных по убыванию массива W[n] и G[m]. Получите из них путем слияния упорядоченный по убыванию массив С; совпадающие элементы вставлять единожды. Подсчитайте количество элементов в массиве С.
Помогите,пожалуйста решить. совсем запуталась..
Решение задачи: «Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию»
textual
Листинг программы
#include <stdio.h> #define N 100 #define M 100 #define K (N+M) void input(int ar[],int n); int main (void) { int W[N],G[M],C[K]; int n,m,k=0,in=0,im=0,i; printf("Enter a size of first array: "); scanf("%d",&n); input(W,n); printf("Enter a size of second array: "); scanf("%d",&m); input(G,m); while(in<n || im<m) { if(in==n) while(im<m) C[k++]=G[im++]; else if(im==m) while(in<n) C[k++]=W[in++]; else if(W[in]>G[im]) C[k++]=W[in++]; else if(W[in]<G[im]) C[k++]=G[im++]; else { C[k++]=G[im]; im++; in++; } } printf("Size of new array: %d\nNew array: ",k); for(i=0;i<k;i++) printf("%d ",C[i]); printf("\n"); return 0; } void input(int ar[],int n) { int i; printf("Enter array: "); for(i=0;i<n;i++) scanf("%d",&ar[i]); }
Объяснение кода листинга программы
Код решает задачу слияния двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию.
- В начале программы объявляются три массива: W, G и C. Массив W содержит элементы первого массива, G - элементы второго массива, а C - результат слияния.
- Затем в функции main() пользователю предлагается ввести размер первого массива, затем второго.
- После этого вводятся элементы обоих массивов с помощью функции input().
- Затем начинается цикл, который выполняется до тех пор, пока не будут полностью заполнены массив C или пока не будут введены все элементы из массивов W и G.
- Внутри цикла сравниваются элементы массивов W и G. Если элемент массива W больше элемента массива G, то этот элемент массива W копируется в массив C. Если элемент массива W меньше элемента массива G, то этот элемент массива G копируется в массив C. Если элементы равны, то в массив C копируется элемент массива G, после чего индикаторы in и im увеличиваются на единицу.
- После завершения цикла выводится размер нового массива и все его элементы.
- В конце программы есть функция input(), которая используется для ввода элементов массивов W и G. Она просто запрашивает у пользователя ввод элементов массива и сохраняет их в массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д