Найти максимальные элементы каждой строки матрицы 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
- двумерный массив размеромm
xn
, содержащий элементы, которые нужно обработать.m
- количество строк в массивеa
.n
- количество столбцов в массивеa
.b
- одномерный массив, в который будут сохраняться максимальные элементы каждой строки матрицыa
.
- Инициализация переменной
count
для подсчета количества найденных максимальных элементов. - Инициализация переменной
max
значением первого элемента первой строки матрицыa
. - Два вложенных цикла:
- Первый цикл проходит по всем строкам матрицы
a
. - Второй цикл проходит по всем столбцам текущей строки.
- Первый цикл проходит по всем строкам матрицы
- Внутри второго цикла проверяется, является ли текущий элемент больше текущего максимального элемента. Если да, то обновляется значение
max
. - После завершения второго цикла, значение
max
сохраняется в одномерном массивеb
и обновляется значениеmax
для следующей строки. - Если есть еще строки в матрице
a
, то после каждой итерации значениеmax
сбрасывается до значения первого элемента следующей строки. - Функция возвращает
void
, так как не производит возврата значения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д