Объясните код
#include <stdio.h>
#include <conio.h>
#define ST_M 5 //директива #define определяет идентификатор и последовательность символов, которая будет подставляться вместо идентификатора каждый раз, когда он встретится в исходном файле.
#define ST_N 3
void check_static_arr(float arr[ST_M][ST_N], int min_arr[ST_N])
{
int i;
for (i = 1; i < 5; i++)
{
if (arr[0] < arr[min_arr[0]][0])
min_arr[0] = i;
if (arr[1] < arr[min_arr[1]][1])
min_arr[1] = i;
if (arr[2] < arr[min_arr[2]][2])
min_arr[2] = i;
}
}
void check_dynamic_arr(float **dy_arr, int *min_dy_arr, int dy_m, int dy_n)
{
int i, j;
for (i = 0; i < dy_m; i++) {
printf("\n");
for (j = 0; j < dy_n; j++)
printf("| %2.f |", dy_arr[j]);
}
for (i = 1; i < dy_m; i++)
{
for (j = 0; j < dy_n; j++)
if (dy_arr[j] < dy_arr[min_dy_arr][j])
min_dy_arr[j] = i;
}
}
int main()
{
// Static
float arr[ST_M][ST_N] = {2.2, 1.4, 3.5,
3.3, 1.2, 2.3,
1.8, 2.1, 3.4,
-0.6, 1.9, 3.2,
0.4, 1.8, 1.7};
int min_arr[ST_N] = {0, 0, 0};
check_static_arr(arr, min_arr);
printf("Min of thirst col: %0.1lf (index: [%d][0]) \n", arr[min_arr[0]][0], min_arr[0]);
printf("Min of second col: %0.1lf (index: [%d][1]) \n", arr[min_arr[1]][1], min_arr[1]);
printf("Min of third col: %0.1lf (index: [%d][2]) \n", arr[min_arr[2]][2], min_arr[2]);
// Dynamic
int dy_m, dy_n, i, j;
float **dy_arr;
int *min_dy_arr;
printf("\n\nInsert M x N for dynamic row\n");
scanf("%d%d", &dy_m, &dy_n);
min_dy_arr = malloc(dy_n * sizeof(int));
for (j = 0; j < dy_n; j++)
min_dy_arr[j] = 0;
dy_arr = malloc(dy_m * sizeof(float));
for (i = 0; i < dy_m; i++)
dy_arr = malloc(dy_n * sizeof(float));
printf("\n");
for (i = 0; i < dy_m; i++)
for (j = 0; j < dy_n; j++)
scanf("%f", &dy_arr[j]);
check_dynamic_arr(dy_arr, min_dy_arr, dy_m, dy_n);
printf("\n");
for (j = 0; j < dy_n; j++)
printf("Min of %d col: %0.1lf (index: [%d][%d]) \n",
(j + 1), dy_arr[min_dy_arr[j]][j], min_dy_arr[j], j);
// Post scriptum
getch();
return 0;
}
#include <stdio.h>
#include <conio.h>
#define ST_M 5 //директива #define определяет идентификатор и последовательность символов, которая будет подставляться вместо идентификатора каждый раз, когда он встретится в исходном файле.
#define ST_N 3
void check_static_arr(float arr[ST_M][ST_N], int min_arr[ST_N])
{
int i;
for (i = 1; i < 5; i++)
{
if (arr[0] < arr[min_arr[0]][0])
min_arr[0] = i;
if (arr[1] < arr[min_arr[1]][1])
min_arr[1] = i;
if (arr[2] < arr[min_arr[2]][2])
min_arr[2] = i;
}
}
void check_dynamic_arr(float **dy_arr, int *min_dy_arr, int dy_m, int dy_n)
{
int i, j;
for (i = 0; i < dy_m; i++) {
printf("\n");
for (j = 0; j < dy_n; j++)
printf("| %2.f |", dy_arr[j]);
}
for (i = 1; i < dy_m; i++)
{
for (j = 0; j < dy_n; j++)
if (dy_arr[j] < dy_arr[min_dy_arr][j])
min_dy_arr[j] = i;
}
}
int main()
{
// Static
float arr[ST_M][ST_N] = {2.2, 1.4, 3.5,
3.3, 1.2, 2.3,
1.8, 2.1, 3.4,
-0.6, 1.9, 3.2,
0.4, 1.8, 1.7};
int min_arr[ST_N] = {0, 0, 0};
check_static_arr(arr, min_arr);
printf("Min of thirst col: %0.1lf (index: [%d][0]) \n", arr[min_arr[0]][0], min_arr[0]);
printf("Min of second col: %0.1lf (index: [%d][1]) \n", arr[min_arr[1]][1], min_arr[1]);
printf("Min of third col: %0.1lf (index: [%d][2]) \n", arr[min_arr[2]][2], min_arr[2]);
// Dynamic
int dy_m, dy_n, i, j;
float **dy_arr;
int *min_dy_arr;
printf("\n\nInsert M x N for dynamic row\n");
scanf("%d%d", &dy_m, &dy_n);
min_dy_arr = malloc(dy_n * sizeof(int));
for (j = 0; j < dy_n; j++)
min_dy_arr[j] = 0;
dy_arr = malloc(dy_m * sizeof(float));
for (i = 0; i < dy_m; i++)
dy_arr = malloc(dy_n * sizeof(float));
printf("\n");
for (i = 0; i < dy_m; i++)
for (j = 0; j < dy_n; j++)
scanf("%f", &dy_arr[j]);
check_dynamic_arr(dy_arr, min_dy_arr, dy_m, dy_n);
printf("\n");
for (j = 0; j < dy_n; j++)
printf("Min of %d col: %0.1lf (index: [%d][%d]) \n",
(j + 1), dy_arr[min_dy_arr[j]][j], min_dy_arr[j], j);
// Post scriptum
getch();
return 0;
}