Qellex

5.2

Dec 22nd, 2020 (edited)
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.45 KB | None | 0 0
  1. #include "stdio.h" // подключение ввода, вывода
  2. #include "locale.h" // подключение русского языка
  3. #include "stdlib.h" // подключение рандома
  4. #include "time.h"
  5.  
  6. void input(int** a, int n, int m) {
  7.     printf("Введите числа (%d): ", n);
  8.     for (int i = 0; i < n; i++) {
  9.         for (int j = 0; j < m; j++)
  10.             scanf_s("%d", &a[i][j]);
  11.     }
  12. }
  13.  
  14.  
  15. void inputrand(int** a, int n, int m) {
  16.     srand(clock());
  17.     for (int i = 0; i < n; i++) {
  18.         for (int j = 0; j < m; j++)
  19.             a[i][j] = rand() % 100;
  20.     }
  21. }
  22.  
  23.  
  24. void output(int** a, int n, int m) {
  25.     for (int i = 0; i < n; i++) {
  26.         for (int j = 0; j < m; j++)
  27.             printf("%3d ", a[i][j]);
  28.         printf("\n");
  29.     }
  30. }
  31.  
  32.  
  33. int main() {
  34.  
  35.     setlocale(LC_ALL, "rus"); // подключение русского языка
  36.  
  37.     int n; int m;
  38.     printf("Введите размер матрицы nxm: ");
  39.     do {
  40.         scanf_s("%d%d", &n, &m);
  41.         if ((n <= 0) || (m <= 0))
  42.             printf("Повторите ввод, введите положительное число: ");
  43.     } while ((n <= 0) || (m <= 0));
  44.  
  45.  
  46.     int** a = (int**)malloc(n * sizeof(int**));
  47.     for (int i = 0; i < m; i++) {
  48.         a[i] = (int*)malloc(m * sizeof(int*));
  49.     }
  50.  
  51.  
  52.     printf("Выберите способ ввода массива:\n1-ввод с клавиатуры\n2-заполнение массива случайными числами\n");
  53.  
  54.     int f;
  55.     do {
  56.         scanf_s("%d", &f);
  57.         if ((f != 1) && (f != 2))
  58.             printf("Введите только 1 или 2: ");
  59.     } while ((f != 1) && (f != 2));
  60.     if (f == 1)
  61.         input(a, n, m);
  62.     else
  63.         inputrand(a, n, m);
  64.  
  65.     printf("\nИсходная матрица\n");
  66.     output(a, n, m);
  67.  
  68.  
  69.     int max = a[0][0], jmax = 0, min = a[0][0], jmin = 0;
  70.    
  71.     for (int i = 0; i < n; i++) {
  72.         for (int j = 0; j < m; j++) {
  73.             if (max > a[i][j]) {
  74.                 max = a[i][j];
  75.                 jmax = j;
  76.             }
  77.             if (min < a[i][j]) {
  78.                 min = a[i][j];
  79.                 jmin = j;
  80.             }
  81.         }
  82.     }
  83.     int s;
  84.     for (int i = 0; i < n; i++) {
  85.         s = a[i][jmax];
  86.         a[i][jmax] = a[i][jmin];
  87.         a[i][jmin] = s;
  88.     }
  89.  
  90.  
  91.     printf("\nИзменненная матрица\n");
  92.     output(a, n, m);
  93.  
  94. }
Add Comment
Please, Sign In to add comment