Advertisement
semenrbt

Kristina_3.2.2

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