Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию - 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]);
}

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

Код решает задачу слияния двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию.

  1. В начале программы объявляются три массива: W, G и C. Массив W содержит элементы первого массива, G - элементы второго массива, а C - результат слияния.
  2. Затем в функции main() пользователю предлагается ввести размер первого массива, затем второго.
  3. После этого вводятся элементы обоих массивов с помощью функции input().
  4. Затем начинается цикл, который выполняется до тех пор, пока не будут полностью заполнены массив C или пока не будут введены все элементы из массивов W и G.
  5. Внутри цикла сравниваются элементы массивов W и G. Если элемент массива W больше элемента массива G, то этот элемент массива W копируется в массив C. Если элемент массива W меньше элемента массива G, то этот элемент массива G копируется в массив C. Если элементы равны, то в массив C копируется элемент массива G, после чего индикаторы in и im увеличиваются на единицу.
  6. После завершения цикла выводится размер нового массива и все его элементы.
  7. В конце программы есть функция input(), которая используется для ввода элементов массивов W и G. Она просто запрашивает у пользователя ввод элементов массива и сохраняет их в массив.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы