Advertisement
Lisaveta777

2D array + lots

Nov 10th, 2018
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.90 KB | None | 0 0
  1. // как делать сортировку двумерного массива?никак не догадаюсь сама.
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <math.h>
  6. #define SIZE 4
  7. #define MINUS -10
  8.  
  9. void pop_arr(int s,int a[SIZE][SIZE]);
  10. void pr_arr(int s,int a[SIZE][SIZE]);
  11. void main_diag(int s,int a[SIZE][SIZE]);//mirror main diagonal
  12. void dop_diag(int s,int a[SIZE][SIZE]);//mirror additional diagonal
  13. void blah(int s,int a[SIZE][SIZE]);//calls main and addition diagonal functions
  14. void sort_arr(int s,int a[SIZE][SIZE]);
  15.  
  16. int main()
  17. {
  18.     int arr[SIZE][SIZE];
  19.     pop_arr(SIZE,arr);
  20.     pr_arr(SIZE,arr);
  21.     sort_arr(SIZE,arr);
  22.     //blah(SIZE,arr);
  23.  
  24.  
  25.     /*int arr[SIZE][SIZE]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
  26.     pr_arr(SIZE,arr);
  27.     printf("\n\n");
  28.     main_diag(SIZE,arr);
  29.     pr_arr(SIZE,arr);
  30.     printf("\n\n");
  31.     main_diag(SIZE,arr);//back to original array
  32.     pr_arr(SIZE,arr);
  33.     printf("\n\n");
  34.     dop_diag(SIZE,arr);
  35.     pr_arr(SIZE,arr);
  36.     printf("\n\n");
  37.     dop_diag(SIZE,arr);//back to origina array
  38.     main_diag(SIZE,arr);
  39.     dop_diag(SIZE,arr);
  40.  
  41.     pr_arr(SIZE,arr);
  42.     printf("\n\n");*/
  43.  
  44.     return 0;
  45. }
  46. void pop_arr(int s,int a[SIZE][SIZE])
  47. {
  48.     int i,j;
  49.     for(i=0;i<s;i++)
  50.     {
  51.         for(j=0;j<s;j++)
  52.             a[i][j]= rand()%20+MINUS;
  53.     }
  54. }
  55.  
  56. void pr_arr(int s,int a[SIZE][SIZE])
  57. {
  58.     int i,j;
  59.     for(i=0;i<s;i++)
  60.     {
  61.         for(j=0;j<s;j++)
  62.             printf("%d\t",a[i][j]);
  63.         printf("\n");
  64.     }
  65. }
  66. void main_diag(int s,int a[SIZE][SIZE])
  67. {
  68.     int i,j,temp;
  69.     for(i=0;i<s;i++)
  70.     {
  71.         for(j=i;j<s;j++)
  72.         {
  73.            if(i!=j)
  74.            {
  75.                temp= a[i][j];
  76.                a[i][j]= a[j][i];
  77.                a[j][i]  = temp;
  78.            }
  79.         }
  80.     }
  81. }
  82.  
  83. void dop_diag(int s,int a[SIZE][SIZE])
  84. {
  85.     int i,j,temp,ti,tj;
  86.     for(i=0;i<s;i++)
  87.     {
  88.         for(j=0;j<s-i;j++)
  89.         {
  90.             ti = s-j-1;
  91.             tj = s-i-1;
  92.            if(j!=s-i-1)//j!=s-i-1
  93.            {
  94.                temp= a[i][j];
  95.                a[i][j]= a[ti][tj];
  96.                a[ti][tj]  = temp;
  97.            }
  98.         }
  99.     }
  100. }
  101.  
  102. void blah(int s,int a[SIZE][SIZE])
  103. {
  104.     pr_arr(s,a);
  105.     printf("\n\n");
  106.     main_diag(s,a);
  107.     pr_arr(s,a);
  108.     printf("\n\n");
  109.     main_diag(s,a);//back to original array
  110.     pr_arr(s,a);
  111.     printf("\n\n");
  112.     dop_diag(s,a);
  113.     pr_arr(s,a);
  114.     printf("\n\n");
  115.     dop_diag(s,a);//back to origina array
  116.     main_diag(s,a);
  117.     dop_diag(s,a);
  118. }
  119. void sort_arr(int s,int a[SIZE][SIZE])
  120. {
  121.     int i,j,temp,ti,tj,max = MINUS;
  122.     for(i=0;i<s;i++)
  123.     {
  124.         ti = i;
  125.         max = MINUS;
  126.         for(j=0;j<s;j++)
  127.         {
  128.             tj = j;
  129.             if(a[i][j]>max)
  130.             {
  131.                 printf("%d\t",a[i][j]);
  132.             }
  133.         }
  134.         a[ti][tj]=max;
  135.         pr_arr(s,a);
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement