Объединить два массива в третий массив, отсортированный по убыванию - C (СИ)

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

Помогите пожалуйста закончить. В общем есть два массива, один отсортирован по возрастанию, второй по убыванию. Нужно объеденить эти два массива в третий массив, отсортированный по убыванию. Все сделал, все отсортировал, не могу создать третий массив, не получается. Смотрел решения на форуме. Помогите создать третий массив, хоть неотсортированный, хоть какой нибудь.
# define _CRT_SECURE_NO_WARNINGS
 
# include <iostream>
# include <stdio.h>
# include <time.h>
# include <windows.h>
# include <conio.h>
 
# define FALSE 0
# define TRUE 1
 
using namespace std;
 
void array(int *arr,int n);
void array1(int *arr1, int k);
void bubbleSort(int* arrPtr, int length_arr);
void bubbleSort1(int* arrPtr, int length_arr); 
 
 
int main()
{    SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     srand(time(NULL));
     int done = FALSE;
     char c;
     int n,k;
     printf("введите размер 1-го массива:\n");
     scanf("%d",&n);
     int *arr = new int[n];
     for( int i=0;i<n;i++)
             {
              arr[i]= rand()%100-50;
             }
 
    printf("Введите размер 2-го массива\n");
    scanf("%d",&k);
       int *arr1 = new int [k];
          for( int j=0;j<k;j++)
          {
            arr1[j]= rand()%100-50;
          }
 
//int *result = new int [n+k];
 
  while (!done) {
        printf("Меню:\n"
            "1) Показать массив №1\n"
            "2) Показать массив №2\n"
            "3) Показать отсортированный массив\n"
            "4) Завершение программы\n");
 
        c = _getch();
        switch (toupper(c)) {
        case '1':
            array(arr,n);
            break;
        case '2':
            array1(arr1,k);
            break;
        case '3':
 
            break;
        case '4':
            done = TRUE;
            break;
        default:
            printf("\n\aНекорректный ввод!\n");
        }
  }
 return 0;
}
void array(int *arr, int n)
{  int i;
          for(i=0;i<n;i++)
          {
              printf(" %d",arr[i]);
          }
      printf("\n");
 
      bubbleSort(arr, n);
 
      printf("\nОтсоритрованный массив №1\n");
         for(int i = 0; i < n; i++)
            {
               printf(" %d",arr[i]);
            }
     printf("\n");
}
 
void array1(int *arr1, int k)
{   int j;
          for(j=0;j<k;j++)
          {
            printf(" %d",arr1[j]);
          }
      printf("\n");
 
      bubbleSort1(arr1, k);
 
      printf("\nОтсоритрованный массив №2\n");
         for(int j = 0; j < k; j++)
            {
               printf(" %d",arr1[j]);
            }
     printf("\n");
}
 
 
 
void bubbleSort(int* arrPtr, int length_arr) 
   {
      int temp = 0; 
      bool exit= false; 
      while(!exit) 
      {
         exit= true;
         for(int count = 0; count< (length_arr - 1); count++)
         if(arrPtr[count] >arrPtr[count + 1]) 
         {
            temp = arrPtr[count];
            arrPtr[count] = arrPtr[count + 1];
            arrPtr[count + 1] = temp;
            exit= false; 
         }
      }
    } 
void bubbleSort1(int* arrPtr, int length_arr) 
   {
      int temp = 0; 
      bool exit= false; 
      while(!exit) 
      {
         exit= true;
         for(int count = 0; count< (length_arr - 1); count++)
         if(arrPtr[count] <arrPtr[count + 1]) 
         {
            temp = arrPtr[count];
            arrPtr[count] = arrPtr[count + 1];
            arrPtr[count + 1] = temp;
            exit= false; 
         }
      }
    }
Добавлено через 10 минут Еще забыл добавить, что третий массив не должен содержать одинаковых элементов


textual

Код к задаче: «Объединить два массива в третий массив, отсортированный по убыванию - C (СИ)»

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
 
int *Merge(int *A1, int n1, int *A2, int n2)
{
    int *R;
    int i,j,p,m,k;
    m=n1+n2;
    R=(int *) calloc(m,sizeof(int));
    i=n1-1;
    j=0;
    p=0;
    while (1)
    {
          if (i==0)
          {
             for (k=j; j<n2; j++) R[p++]=A2[j];
             break;
          }              
          
          if (j==(n2-1))
          {
            for (k=i; i>=0; i--) R[p++]=A1[i];
            break;
          }  
          
          if (A1[i]==A2[j]) 
             {R[p++]=A1[i]; i--; j++;}
          else   
             if (A1[i]<A2[j])  
                R[p++]=A2[j++]; 
             else
                R[p++]=A1[i--];
    }
    return R;
}         
 
int main(int argc, char *argv[])
{
 
  int A1[5]={1,2,3,4,5};
  int A2[7]={10,9,8,7,6,5,4};
  int *R,i;
  
  R=Merge(A1,5,A2,7);
  for (i=0; i<12; i++) printf("%d ",R[i]);
  printf("\n");
  free(R);
 
  system("PAUSE");  
  return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

8   голосов, оценка 4.000 из 5

Источник
Похожие ответы