Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- 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));
- const int N = rand()%8+2;
- int ** x = CreateArray(N, N, 0, 1);
- if(x == NULL){ // Проверка
- printf("Error.\n");
- return 0;
- }
- int sum = 0;
- int M = N-1;
- for(int i = 0; i < N; i++) // Выводим x в консоль
- {
- for(int j = 0; j < N; j++)
- {
- printf("%d, ", x[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- if(N%2 == 1)
- {
- for(int i = 0; i <= (N-1)/3; i++)
- {
- for(int j = i; j <= (N-1)/3; j++)
- {
- sum = sum + x[i][j] + x[i][M-j] + x[M-i][j] + x[M-i][M-j];
- }
- }
- for(int k = 0; k < N; k++)
- {
- sum = sum + x[k][M/2];
- }
- printf("Sum = %d\n", sum);
- }
- else
- {
- for(int i = 0; i < (N-2)/2; i++)
- {
- for(int j = i; j < (N-2)/2; j++)
- {
- sum = sum + x[i][j] + x[M-i][j] + x[i][M-j] + x[M-i][M-j];
- }
- }
- for(int i = 0; i < N; i++)
- {
- for(int j = (N-2)/2; j <= (N-2)/2 + 1; j++)
- {
- sum = sum + x[i][j];
- }
- }
- printf("Sum = %d\n", sum);
- }
- for (int i = 0; i < N; i++) { // Освобождаем память
- free(x[i]);
- }
- free(x);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement