Advertisement
daniil_mironoff

Untitled

Nov 17th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.52 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void inputMatrix(int** matrix, unsigned int x, unsigned int y) {
  4.     for (int i = 0; x > i; i++) {      // строки
  5.         for (int j = 0; y > j; j++) {  // столбцы
  6.             printf("Введите matrix[%d][%d]: ", i, j);
  7.             scanf("%d", &matrix[i][j]);
  8.         }
  9.     }
  10. }
  11.  
  12. void printMatrix(int** matrix, unsigned int x, unsigned int y) {
  13.     for (int i = 0; x > i; i++) {
  14.         for (int j = 0; y > j; j++) {
  15.             printf("%d ", matrix[i][j]);
  16.         }
  17.         printf("\n");
  18.     }
  19. }
  20.  
  21. void checkMatrix(int** matrix, unsigned int x, unsigned int y) {
  22.     for (int i = 0; x > i; i++) {
  23.         // Если числа в столбце отличаются - переменная flag останется 0
  24.         // иначе, будет равна 1
  25.         int flag = 0;
  26.  
  27.         for (int j = 0; y - 1 > j; j++) {
  28.             for (int k = j + 1; y > k; k++) {
  29.                 if (matrix[i][j] == matrix[i][k]) {
  30.                     flag = 1;
  31.                     break;
  32.                 }
  33.             }
  34.  
  35.             // Выходим из цикла по горизонтали
  36.             if (flag == 1) {
  37.                 break;
  38.             }
  39.  
  40.         }
  41.  
  42.         // Если не все числа отличаются,
  43.         // значит мы должны найти наименьший и наибольший
  44.         // и поменять их значения
  45.         if (flag == 1) {
  46.             unsigned int indexMin = 0;
  47.             unsigned int indexMax = 0;
  48.  
  49.             for (int j = 1; y > j; j++) {
  50.                 // Если число больше предыдущего наибольшего
  51.                 // то мы запоминаем индекс этого числа
  52.                 if (matrix[i][j] > matrix[i][indexMax]) {
  53.                     indexMax = j;
  54.                 }
  55.  
  56.                 // тоже самое, но с наименьшим
  57.                 if (matrix[i][indexMin] > matrix[i][j]) {
  58.                     indexMin = j;
  59.                 }
  60.  
  61.             }
  62.  
  63.             // Меняем местами
  64.             int tempInt = matrix[i][indexMin];
  65.             matrix[i][indexMin] = matrix[i][indexMax];
  66.             matrix[i][indexMax] = tempInt;
  67.  
  68.         }
  69.  
  70.     }
  71. }
  72.  
  73. int main() {
  74.     unsigned int N, M;
  75.  
  76.     printf("Введите M (x): ");
  77.     scanf("%d", &M);
  78.  
  79.     printf("Введите N (y): ");
  80.     scanf("%d", &N);
  81.  
  82.     // Создание матрицы
  83.     int** matrix = new int* [N];
  84.  
  85.     for(int i; N > i; i++) {
  86.         matrix[i] = new int[M];
  87.     }
  88.  
  89.     // Ввод значений
  90.     inputMatrix(matrix, N, M);
  91.  
  92.     // Вывод текущий матрицы
  93.     printf("Текущая матрица:\n");
  94.     printMatrix(matrix, N, M);
  95.  
  96.     // Проверка матрицы
  97.     checkMatrix(matrix, N, M);
  98.  
  99.     // Вывод новой матрицы
  100.     printf("Получилась матрица:\n");
  101.     printMatrix(matrix, N, M);
  102.  
  103.     return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement