Массивы. В каждой строке ищется максимум и сохраняется в новый одномерный - C (СИ)
Формулировка задачи:
ребята,нужна помощь срочно) есть программа состоящая из подпрограмм. ее суть такова: вводятся 2 двумерных массива. в них в каждой строке ищется максимум и сохраняется в новый одномерный массив,который позже выводится.
мне нужно ее изменить так,чтобы выводило максимум не со строки а со столбца,но я искренне не понимаю как это сделать)
#include<stdio.h> #include<conio.h> #include<math.h> void vvod1m(int *p,int *n,int *m,char sim) { int i,j,k=0; printf("vvedite kol-vo strok massiva %c:",sim); scanf("%d",n); printf("vvedite kol-vo stolbcov massiva %c:",sim); scanf("%d",m); for(i=0;i<*n;i++) for(j=0;j<*m;j++) { printf("%c[%d][%d]=",sim,i,j); scanf("%d",p+k); k++; } } void vivod1m(int *p,int n,int m,char sim) { int i,j,k=0; printf("massiv %c\n",sim); for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%d ",*(p+k)); k++; } puts("\n"); } } int vector(int *p,int n,int m,int *u,int *y) { int i,j,k=0,max=0,l=0; for(i=0;i<n;i++) { max=0; for(j=0;j<m;j++) { if(*(p+k)>max) { max=*(p+k); } k++; } *(u+l)=max; l++; } *y=l; } void vivod2m(int *u,int n,char sim) { int i; printf("massiv %c\n",sim); for(i=0;i<n;i++) printf("%c[%d]=%d\n",sim,i,*(u+i)); } int main() { int z[100],t[100],c[100],d[100],n1,m1,n2,m2,y1,y2; vvod1m(z,&n1,&m1,'z'); vvod1m(t,&n2,&m2,'t'); vivod1m(z,n1,m1,'z'); vivod1m(t,n2,m2,'t'); vector(z,n1,m1,c,&y1); vector(t,n2,m2,d,&y2); vivod2m(c,y1,'c'); vivod2m(d,y2,'d'); getch(); }
Решение задачи: «Массивы. В каждой строке ищется максимум и сохраняется в новый одномерный»
textual
Листинг программы
int vector(int *p,int n,int m,int *u,int *y) { int i,j,k=0,max=0,l=0; for(i=0;i<n;i++) { max=0; k=i; for(j=0;j<m;j++) { if(*(p+k)>max) { max=*(p+k); } k+=m; } *(u+l)=max; l++; } *y=l; }
Объяснение кода листинга программы
- Входные данные:
n
- количество строк в массивеp
(предполагается, чтоn
больше 0)m
- количество столбцов в массивеp
(предполагается, чтоm
больше 0)u
- указатель на первый элемент нового одномерного массива (предполагается, чтоu
уже выделен памятью)y
- указатель на переменную, в которую будет записан размер нового массива (предполагается, чтоy
уже выделен памятью)
- Создаются и инициализируются следующие переменные:
i
- счетчик строк в циклеj
- счетчик столбцов в циклеk
- вспомогательный счетчик для прохода по всем элементам строкиmax
- текущий максимум в строкеl
- счетчик для записи новых значений в новый массив
- Происходит два вложенных цикла:
- Внешний цикл проходит по всем строкам массива
p
. - Внутренний цикл проходит по всем столбцам массива
p
в текущей строке.
- Внешний цикл проходит по всем строкам массива
- В каждой итерации внутреннего цикла сравнивается текущий элемент со значением
max
. Если текущий элемент большеmax
, то обновляется значениеmax
. - После завершения внутреннего цикла
k
увеличивается наm
для перехода к следующей строке. - После завершения внешнего цикла значение
max
в текущей строке записывается в новый массив по индексуl
. Затемl
увеличивается на 1. - После завершения внешнего цикла значение
l
записывается в переменнуюy
. - Функция возвращает 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д