Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include<malloc.h>
- // В 3 билете нужно выполнить 1 задачу, используя динамику, собственно вот:
- // Та же функция, только создает не массив, а матрицу с заданными значениями Н,М
- // И диапазоном значений от мин до макс
- int **CreateArray(int N, int M, int min, int max){ // min, max - диапазон рандомных значений матрицы, Н,М - ее размеры
- int **Arr = NULL;
- if(max < min)
- {
- int s = min;
- min = max;
- max = s;
- }
- Arr = (int**) malloc(N*sizeof(int*)); // Выделяем память для массива
- if(Arr == NULL) return NULL;
- for(int k = 0; k < N; k++){
- Arr[k] = (int*) malloc(M*sizeof(int));
- if(Arr[k] == NULL)
- { // Если в процессе выеделения памяти произошла ошибка, то вся память
- for(int i = 0; i < k; i++) // Освобождается
- free(Arr[i]);
- free(Arr);
- return NULL;
- }
- }
- for(int i = 0; i < N; i++){ // Наполняем массив значениями
- for(int j = 0; j < M; j++){
- Arr[i][j] = rand()%(max - min + 1) + min; // Тут формула, как найти рандомное число
- } // в диапазоне от мин до макс
- }
- return Arr;
- }
- int main(){
- srand(time(NULL)); // Запускаем таймер для генерации рандомных чисел
- int Special = 0;
- int o = 0;
- int sum = 0;
- //int mas[N][M] = {{7, 1, 1, 1, 1},
- // {7, 1, 1, 1, 1},
- // {7, 1, 1, 1, 1},
- // {7, 1, 1, 1, 1},
- // {7, 1, 1, 1, 1}};
- const int N = rand()%11+1; // Диапазон значений размера массива (от 1 до 10)х(от 1 до 10)
- const int M = rand()%11+1;
- int ** mas = CreateArray(N, M, 0, 10); // Создаю двумерный массив mas размера NxM диапазоном значений от 0 до 10
- for(int i = 0; i < N; i++) // Выводим mas в консоль
- {
- for(int j = 0; j < M; j++)
- {
- printf("%d, ", mas[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- for(int i = 0; i < N; i++) // Ищем особые элементы
- {
- for(int j = 0; j < M; j++)
- {
- o = 0;
- while(o < j)
- {
- sum = sum + mas[i][o];
- o++;
- }
- if(o == j) o++;
- while(o > j && o < M)
- {
- sum = sum + mas[i][o];
- o++;
- }
- if(mas[i][j] > sum) Special++;
- sum = 0;
- }
- }
- printf("Osobih elementov: %d\n", Special);
- for (int i = 0; i < N; i++) { // Освобождаем память
- free(mas[i]);
- }
- free(mas);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement