Advertisement
yosikadoshi

Lab11Ex2

Jan 11th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <time.h>
  4. #define COLUMNS 10
  5. #define ROWS 5
  6. void initRandomArray(int arr[][COLUMNS]);
  7. void printArray(int arr[][COLUMNS]);
  8. void sortArray(int arr[][COLUMNS]);
  9. void sortInColumn(int arr[][COLUMNS], int col);
  10. void sortColumns(int arr[][COLUMNS]);
  11. int compareColumns(int arr[][COLUMNS], int col1, int col2);
  12. void swapColumns(int arr[][COLUMNS], int col1, int col2);
  13. void swap(int *a, int *b);
  14. void main()
  15. {
  16.     int i, arr[ROWS][COLUMNS];
  17.     initRandomArray(arr);
  18.     printf("Before sorting:\n");
  19.     printArray(arr);
  20.     sortArray(arr);
  21.     getch();
  22. }  
  23. void initRandomArray(int arr[][COLUMNS])
  24. {
  25.     int i,j;
  26.     srand(time(NULL));
  27.     for (i = 0; i < ROWS;i++)
  28.         for (j = 0; j < COLUMNS; j++)
  29.             arr[i][j] = (rand() % 21);
  30. }
  31. void printArray(int arr[][COLUMNS])
  32. {
  33.     int i, j;
  34.     for (i = 0; i < ROWS; i++)
  35.     {
  36.         for (j = 0; j < COLUMNS; j++)
  37.             printf("%4d", arr[i][j]);
  38.         printf("\n");
  39.     }
  40. }
  41. void sortArray(int arr[][COLUMNS])
  42. {
  43.     int i;
  44.     for (i = 0; i < COLUMNS; i++)
  45.         sortInColumn(arr, i);
  46.     printf("\nSorting elements in each column:\n");
  47.     printArray(arr);
  48.     sortColumns(arr);
  49.     printf("\nSorting columns:\n");
  50.     printArray(arr);
  51. }
  52. void sortInColumn(int arr[][COLUMNS], int col)
  53. {
  54.     int i,j,temp;
  55.     for (j=0; j<ROWS-1; j++)
  56.         for (i = 1; i<ROWS; i++)
  57.             if (arr[i - 1][col] > arr[i][col])
  58.                 swap(&arr[i - 1][col], &arr[i][col]);
  59. }
  60. void sortColumns(int arr[][COLUMNS])
  61. {
  62.     int i, j;
  63.     for (j = 0; j<COLUMNS - 1; j++)
  64.         for (i = 1; i<COLUMNS; i++)
  65.             if (compareColumns(arr,i-1,i))
  66.                 swapColumns(arr,i-1,i);
  67. }
  68. int compareColumns(int arr[][COLUMNS], int col1, int col2)
  69. {
  70.     int i;
  71.     for (i = 0; i < ROWS; i++)
  72.     {
  73.         if (arr[i][col1]>arr[i][col2])
  74.             return 1;
  75.         if (arr[i][col1] < arr[i][col2])
  76.             return 0;
  77.     }
  78.     return 0;
  79. }
  80. void swapColumns(int arr[][COLUMNS], int col1, int col2)
  81. {
  82.     int i;
  83.     for (i = 0; i < ROWS; i++)
  84.         swap(&arr[i][col1], &arr[i][col2]);
  85. }
  86. void swap(int *a, int *b)
  87. {
  88.     int temp;
  89.  
  90.     temp = *b;
  91.     *b = *a;
  92.     *a = temp;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement