Advertisement
semenrbt

3.1 dinamic

Feb 18th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int **CreateArray(int N, int M, int min, int max){ // min, max - диапазон рандомных значений матрицы, Н,М - ее размеры
  6.     int **Arr = NULL;
  7.     if(max < min)
  8.     {
  9.         int s = min;
  10.         min = max;
  11.         max = s;
  12.     }
  13.     Arr = (int**) malloc(N*sizeof(int*)); // Выделяем память для массива
  14.     if(Arr == NULL) return NULL;
  15.     for(int k = 0; k < N; k++){
  16.         Arr[k] = (int*) malloc(M*sizeof(int));
  17.         if(Arr[k] == NULL)
  18.         {     // Если в процессе выеделения памяти произошла ошибка, то вся память
  19.             for(int i = 0; i < k; i++) // Освобождается
  20.                 free(Arr[i]);
  21.             free(Arr);
  22.             return NULL;
  23.         }
  24.     }
  25.     for(int i = 0; i < N; i++){ // Наполняем массив значениями
  26.         for(int j = 0; j < M; j++){
  27.             Arr[i][j] = rand()%(max - min + 1) + min; // Тут формула, как найти рандомное число
  28.         }                                      
  29.     }
  30.     return Arr;
  31. }
  32.  
  33. int main()
  34. {
  35.   srand(time(NULL));
  36.   const int N = rand()%4+1; // %11+1
  37.   int ** x = CreateArray(N, N, 0, 1);
  38.   if(x == NULL){ // Проверка
  39.         printf("Error.\n");
  40.         return 0;
  41.   }
  42.   for(int i = 0; i < N; i++) // Выводим x в консоль
  43.     {
  44.       for(int j = 0; j < N; j++)
  45.       {
  46.         printf("%d, ", x[i][j]);
  47.       }
  48.       printf("\n");
  49.     }
  50.     printf("\n");
  51.  
  52.  
  53.   int counter = 0;
  54.   for(int i = N-1; i > 0; i--)
  55.   {
  56.     for(int j = 0; j < i; j++)
  57.     {
  58.       if(x[i][j] != x[j][i]) {
  59.         printf("Ne simmetri4na.\n");
  60.         return 0;
  61.       }
  62.     }
  63.   }
  64.   printf("Simmetri4na");
  65.   for (int i = 0; i < N; i++) { // Освобождаем память
  66.         free(x[i]);
  67.     }
  68.     free(x);
  69.  
  70.   return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement