Вычислить значение наименьшего элемента для каждого столбца матрицы - C (СИ)
Формулировка задачи:
Вычислить значение наименьшего элемента для каждого столбца массива N <= 7, M <= 5(массив должен быть реализован через malloc)
Решение задачи: «Вычислить значение наименьшего элемента для каждого столбца матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int main()
{
int *a;
int i, j, n, m;
system("chcp 1251");
system("cls");
printf("Введите количество строк: ");
scanf("%d", &n);
printf("Введите количество столбцов: ");
scanf("%d", &m);
a = (int*) malloc(n*m*sizeof(int));
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("a[%d][%d] = ", i, j);
scanf("%d", (a+i*m+j));
}
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%5d ", *(a+i*m+j));
}
printf("\n");
}
int arrMin[m];
int min = 0;
for (j = 0; j < m; j++)
{
for ( i = 0; i < n; i++)
{
if (*(a+min*m+j) > *(a+i*m+j))
{
min = i;
}
}
arrMin[m] = *(a+min*m+j);
printf("%d\n", arrMin[m]);
}
free(a);
getchar(); getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
a- указатель на первый элемент массива, который будет содержать значения элементов матрицы;i,j,n,m- целочисленные переменные, которые будут использоваться для описания строк, столбцов и количества строк и столбцов матрицы.
- С помощью функции
scanfпользователю предлагается ввести количество строк и столбцов матрицы. - С помощью функции
mallocвыделяется память под массивaразмеромn*m*sizeof(int). - В цикле происходит заполнение матрицы значениями. Значения принимаются с клавиатуры.
- С помощью двух вложенных циклов происходит вывод значений матрицы на экран.
- Объявлен массив
arrMinразмеромm, который будет содержать минимальные значения элементов каждого столбца. - В цикле происходит поиск минимального значения в каждом столбце.
- В конце программы выводится на экран массив
arrMin, содержащий минимальные значения элементов каждого столбца. - С помощью функции
freeосвобождается память, выделенная под массивa. - С помощью функции
getcharсчитываются символы, нажатые на клавиатуре, чтобы программа могла корректно завершить работу.