Vla_DOS

3

Feb 22nd, 2022
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.79 KB | None | 0 0
  1. //#include <iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include <locale.h>
  5. #include <time.h>
  6. #include <ctime>
  7. #include <utility>
  8. #include <algorithm>
  9.  
  10. using namespace std;
  11. using std::swap;
  12.  
  13. void RandArray(int** array, int row, int column)
  14. {
  15.     for (int i = 0; i < row; i++)
  16.     {
  17.         for (int j = 0; j < column; j++)
  18.         {
  19.             array[i][j] = 1 + rand() % 50;
  20.         }
  21.     }
  22. }
  23. void PrintArray(int** array, int row, int column)
  24. {
  25.     for (int i = 0; i < row; i++)
  26.     {
  27.         for (int j = 0; j < column; j++)
  28.         {
  29.             printf("%d\t", array[i][j]);
  30.         }
  31.         printf("\n\n");
  32.     }
  33. }
  34.  
  35.  
  36.  
  37. void ExchangeSortArray(int** array, int row, int column)
  38. {
  39.     for (int i = 0; i < row; i++)
  40.     {
  41.         for (int j = 0; j < column; j++)
  42.         {
  43.             int m = i;
  44.             int n = j + 1;
  45.             while (true)
  46.             {
  47.                 if (n == column)
  48.                 {
  49.                     n = 0;
  50.                     m++;
  51.                     if (m == row)
  52.                         break;
  53.                 }
  54.                 if (array[i][j] > array[m][n])
  55.                     swap(array[i][j], array[m][n]);
  56.                 n++;
  57.             }
  58.         }
  59.     }
  60. }
  61. void SelectionSort(int** array, int row, int column) {
  62.     for (int i = 0; i < row; ++i)
  63.         for (int j = 0; j < column; ++j) {
  64.             int max_i = i, max_j = j, tmp;
  65.             for (int i1 = i, j1 = j + 1; i1 < row; ++i1, j1 = 0)
  66.                 for (; j1 < column; ++j1)
  67.                     if (array[i1][j1] < array[max_i][max_j])
  68.                     {
  69.                         max_i = i1;
  70.                         max_j = j1;
  71.                     }
  72.             tmp = array[i][j];
  73.             array[i][j] = array[max_i][max_j];
  74.             array[max_i][max_j] = tmp;
  75.         }
  76. }
  77.  
  78. int main()
  79. {
  80.     setlocale(0, "");
  81.  
  82.     int row, column;
  83.     printf("Введiть кiлькicть рядкiв: ");
  84.     scanf("%d", &row);
  85.     printf("\nВведiть кiлькicть стовбцiв: ");
  86.     scanf("%d", &column);
  87.  
  88.     int** array = new int* [row];
  89.     for (int count = 0; count < row; count++)
  90.         array[count] = new int[column];
  91.     RandArray(array, row, column);
  92.     printf("Згенерований массив:\n");
  93.  
  94.     PrintArray(array, row, column);
  95.  
  96.     int n;
  97.     do {
  98.         printf("\nВиберiть метод сортування:\n 1. Обмiном.\n 2. Вибору.\n 0. Вихiд.\n");
  99.  
  100.         scanf("%d", &n);
  101.         if (n == 1) {
  102.             ExchangeSortArray(array, row, column);
  103.         }
  104.         else if (n == 2) {
  105.             SelectionSort(array, row, column);
  106.         }
  107.         printf("Вiдсортований массив:\n");
  108.  
  109.         PrintArray(array, row, column);
  110.     } while (n != 0);
  111.     return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment