Найти максимальные элементы каждой строки матрицы a(5,7) и сохранить их в одномерном массиве b - C (СИ)
Формулировка задачи:
Найти максимальные элементы каждой строки матрицы a(5,7) и сохранить их в одномерном массиве b
Что нужно добавить/поменять в этой программе?
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define M 5
#define N 7
#define A -50
#define B 50
void InitA(int a[][N],int m, int n)
{
int i,j;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
a[i][j]=A+rand()%(B-A+1);
}
void PrintA(int a[][N],int m, int n)
{
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
}
void InitB(int a[][N],int m,int n,int *b)
{
int i,j,count,max=a[0][0];
for(i=0;i<m;i++)
for(j=count=0;j<n;j++)
{
if(a[i][j]>max)
max=a[i][j];
b[i]=max;
}
}
void PrintB(int *a,int n)
{
int i;
for (i=0;i<n;i++)
printf("%5d",a[i]);
printf("\n");
}
int main()
{
int a[M][N],b[M];
srand(time(NULL));
InitA(a,M,N);
PrintA(a,M,N);
InitB(a,M,N,b);
PrintB(b,M);
return 0;
}Решение задачи: «Найти максимальные элементы каждой строки матрицы a(5,7) и сохранить их в одномерном массиве b»
textual
Листинг программы
void InitB(int a[][N],int m,int n,int *b)
{
int i,j,count,max=a[0][0];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]>max)
max=a[i][j];
}
b[i] = max;
if(i<m-1)
max = a[i+1][0];
}
}
Объяснение кода листинга программы
- Входные данные:
a- двумерный массив размеромmxn, содержащий элементы, которые нужно обработать.m- количество строк в массивеa.n- количество столбцов в массивеa.b- одномерный массив, в который будут сохраняться максимальные элементы каждой строки матрицыa.
- Инициализация переменной
countдля подсчета количества найденных максимальных элементов. - Инициализация переменной
maxзначением первого элемента первой строки матрицыa. - Два вложенных цикла:
- Первый цикл проходит по всем строкам матрицы
a. - Второй цикл проходит по всем столбцам текущей строки.
- Первый цикл проходит по всем строкам матрицы
- Внутри второго цикла проверяется, является ли текущий элемент больше текущего максимального элемента. Если да, то обновляется значение
max. - После завершения второго цикла, значение
maxсохраняется в одномерном массивеbи обновляется значениеmaxдля следующей строки. - Если есть еще строки в матрице
a, то после каждой итерации значениеmaxсбрасывается до значения первого элемента следующей строки. - Функция возвращает
void, так как не производит возврата значения.