Advertisement
Qellex

5.2

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