Массивы. В каждой строке ищется максимум и сохраняется в новый одномерный - 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;
}

Объяснение кода листинга программы

  1. Входные данные:
    • n - количество строк в массиве p (предполагается, что n больше 0)
    • m - количество столбцов в массиве p (предполагается, что m больше 0)
    • u - указатель на первый элемент нового одномерного массива (предполагается, что u уже выделен памятью)
    • y - указатель на переменную, в которую будет записан размер нового массива (предполагается, что y уже выделен памятью)
  2. Создаются и инициализируются следующие переменные:
    • i - счетчик строк в цикле
    • j - счетчик столбцов в цикле
    • k - вспомогательный счетчик для прохода по всем элементам строки
    • max - текущий максимум в строке
    • l - счетчик для записи новых значений в новый массив
  3. Происходит два вложенных цикла:
    • Внешний цикл проходит по всем строкам массива p.
    • Внутренний цикл проходит по всем столбцам массива p в текущей строке.
  4. В каждой итерации внутреннего цикла сравнивается текущий элемент со значением max. Если текущий элемент больше max, то обновляется значение max.
  5. После завершения внутреннего цикла k увеличивается на m для перехода к следующей строке.
  6. После завершения внешнего цикла значение max в текущей строке записывается в новый массив по индексу l. Затем l увеличивается на 1.
  7. После завершения внешнего цикла значение l записывается в переменную y.
  8. Функция возвращает 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы