Advertisement
Guest User

dz1.c

a guest
May 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.56 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_BR_EL 100
  4.  
  5. void sort_nondescending(int niz[], int n){
  6.     int i, j, temp;
  7.     for (i=0; i<n-1; i++){
  8.         for (j=i+1; j<n; j++){
  9.             if (niz[i]>niz[j]){
  10.                 temp=niz[i];
  11.                 niz[i]=niz[j];
  12.                 niz[j]=temp;
  13.             }
  14.         }
  15.     }
  16. }
  17.  
  18. void sort_nonascending(int niz[], int n){
  19.     int i, j, temp;
  20.     for (i=0; i<n-1; i++){
  21.         for (j=i+1; j<n; j++){
  22.             if (niz[i]<niz[j]){
  23.                 temp=niz[i];
  24.                 niz[i]=niz[j];
  25.                 niz[j]=temp;
  26.             }
  27.         }
  28.     }
  29. }
  30.  
  31. void flip_niz(int niz[], int n){
  32.     int temp[MAX_BR_EL], i, j;
  33.     for (i=0; i<n; i++){
  34.         temp[i]=niz[i];
  35.     }
  36.     j=0;
  37.     for (i=n-1; i>=0; i--){
  38.         niz[j]=temp[i];
  39.         j++;
  40.     }
  41. }
  42.  
  43. int main()
  44. {
  45.     int i, j, n1, n2, niz1[MAX_BR_EL], niz2[MAX_BR_EL], niz3[MAX_BR_EL], niz1_ascending, niz2_ascending;
  46.  
  47.     /* Enter array 1 elements: */
  48.     printf("Number of elements in the first array: "); scanf("%d", &n1);
  49.     for (i=0; i<n1; i++){
  50.         scanf("%d", &niz1[i]);
  51.     }
  52.  
  53.     /*Sort array 1 (Bubble sort) */
  54.     printf("\nHow would you like array 1 sorted? ");
  55.     printf("\n1: Non-descending\n2: Non-ascending\n");
  56.     while (1){
  57.         scanf("%d", &i);
  58.         if (i==1){
  59.             sort_nondescending(niz1, n1);
  60.             break;
  61.         } else if (i==2){
  62.             sort_nonascending(niz1, n1);
  63.             break;
  64.         } else{
  65.             printf("\nWrong entry, pick again:");
  66.         }
  67.     }
  68.      /* Print sorted array 1: */
  69.      for (i=0; i<n1; i++){
  70.         printf("%d ", niz1[i]);
  71.      }
  72.  
  73.     /* Enter array 2 elements: */
  74.     printf("\nNumber of elements in the second array: "); scanf("%d", &n2);
  75.     for (i=0; i<n2; i++){
  76.         scanf("%d", &niz2[i]);
  77.     }
  78.  
  79.     /*Sort array 2 (Bubble sort) */
  80.     printf("\nHow would you like array 2 sorted? ");
  81.     printf("\n1: Non-descending\n2: Non-ascending\n");
  82.     while (1){
  83.         scanf("%d", &i);
  84.         if (i==1){
  85.             sort_nondescending(niz2, n2);
  86.             break;
  87.         } else if (i==2){
  88.             sort_nonascending(niz2, n2);
  89.             break;
  90.         } else{
  91.             printf("\nWrong entry, pick again:");
  92.         }
  93.     }
  94.      /* Print sorted array 2: */
  95.      for (i=0; i<n2; i++){
  96.         printf("%d ", niz2[i]);
  97.      }
  98.  
  99.      /* Merge arrays 1 and 2, sorted in the same way.
  100.         If they are not sorted in the same way, flip
  101.         array 2 to make them sorted the same way, then
  102.         merge them. */
  103.     niz1_ascending=1; niz2_ascending=1;
  104.     for (i=0; i<n1; i++){
  105.         for (j=i+1; j<n1; j++){
  106.             if (niz1[i]>niz1[j]){
  107.                 niz1_ascending=0;
  108.             }
  109.         }
  110.     }
  111.  
  112.     for (i=0; i<n2; i++){
  113.         for (j=i+1; j<n2; j++){
  114.             if (niz2[i]>niz2[j]){
  115.                 niz2_ascending=0;
  116.             }
  117.         }
  118.     }
  119.  
  120.     if (niz1_ascending != niz2_ascending){
  121.         flip_niz(niz2, n2);
  122.         printf("\n\nArrays 1 and 2 were not the same format, flipping array 2: \n");
  123.         for (i=0; i<n2; i++){
  124.             printf("%d ", niz2[i]);
  125.         }
  126.     }
  127.  
  128.     for (i=0; i<n1; i++){
  129.         niz3[i]=niz1[i];
  130.     }
  131.     for (i=n1; i<n1+n2; i++){
  132.         niz3[i]=niz2[i-n1];
  133.     }
  134.  
  135.     if (niz1_ascending==1){
  136.         sort_nondescending(niz3, n1+n2);
  137.     } else{
  138.         sort_nonascending(niz3, n1+n2);
  139.     }
  140.  
  141.     printf("\n\nThis is the merged and sorted array: \n");
  142.     for (i=0; i<n1+n2; i++){
  143.         printf("%d ", niz3[i]);
  144.     }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement