Advertisement
daniil_mironoff

Untitled

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