Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int** create_matrix(int n, int m); // дИкларирАваие функций
- void rand_matrix(int **matr, int n, int m);
- void print_matrix(int **matr, int n, int m);
- void free_matrix(int **matr);
- void cut_matrix (int **matr, int n, int m);
- int main()
- {
- int n = 0;
- int m = 0;
- printf ("Матрица ЭМ на ЭН: "); //1999
- scanf ("%d", &n);
- scanf ("%d", &m);
- if (m*n<2)
- {
- perror ("2 на 2 шоб минимал\n");
- }
- int **matr = create_matrix(n, m);
- rand_matrix(matr, n, m);
- print_matrix(matr, n, m);
- cut_matrix(matr, n, m);
- return (0);
- }
- // дифайн функций
- int** create_matrix(int n, int m)
- {
- int **matr = calloc(n, sizeof(int*)); // первое измерение (первая строка)
- if (matr == NULL)
- perror("1000 прыжков с парашютом, 999 из них не открылось, вопросы?");
- for (int i = 0; i < n; i++)
- {
- matr[i] = calloc(m, sizeof(int)); // второе измерение (матрикс)
- if (matr[i] == NULL)
- perror("Ошибка при создании \"второго измерения\"");
- }
- return matr;
- }
- void rand_matrix(int **matr, int n, int m)
- {
- srand(time(NULL)); // чтобы рандом был рандомным
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- matr[i][j] =-30 + rand() %60;
- }
- }
- }
- void print_matrix(int **matr, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- printf("%3d ", matr[i][j]);
- }
- puts("");
- }
- }
- void free_matrix(int **matr)
- {
- free (matr);
- }
- void cut_matrix(int **matr, int n, int m)
- {
- int max = matr[0][0];
- int max_i = 0;
- int max_j = 0;
- int min = matr[0][0];
- int min_i = 0;
- int min_j = 0;
- // поиск макисмума и минимума
- for (int i = 0; i < n; i++) // прабежка па "строкам"
- {
- for (int j = 0; j < m; j++) // прабежка па "столбцам"
- {
- if (max < matr[i][j])
- {
- max = matr[i][j];
- max_i = i;
- max_j = j;
- }
- else if (min > matr[i][j])
- {
- min = matr[i][j];
- min_i = i;
- min_j = j;
- }
- }
- }
- printf("\n%d %d\n", min, max);
- int amount_str; //количество строк
- int amount_clm; //количество столбцов
- int count_i; //для
- int count_j; //цикла
- amount_str = max_i - min_i;
- if(amount_str < 0)
- amount_str *= -1;
- amount_clm = max_i - min_i;
- if(amount_clm < 0)
- amount_clm *= -1;
- // много ИФов
- if(max_i < min_i)
- count_i = max_i;
- else
- count_i = min_i;
- if(max_j < min_j)
- count_j = max_j;
- else
- count_j = min_j;
- for (int i = count_i; i <= count_i + amount_str; i++) //откуда; границы (столбцы), i++
- {
- for (int j = count_j; j <= count_j + amount_clm; j++) //откуда; границы(строки), j++
- {
- printf("%3d", matr[i][j]);
- }
- }
- }
Add Comment
Please, Sign In to add comment