Найти строку матрицы с наибольшей и наименьшей суммой элементов - C (СИ) (73801)
Формулировка задачи:
Дана прямоугольная матрица. Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найден*ные строки: и суммы их элементов.
Ошибка состоит в том, что оно отображает ВСЕ строки и во всех говорит, что они являются максимальными.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define n 4
#define m 4
void main()
{
int sum[n],mas[n][m],i,j,max=0,min=0,maxi,mini;
randomize();
for(i=0;i<n;i++)
{
sum[i]=0;
for(j=0;j<m;j++)
{
mas[i][j]=random(11);
printf("%d\t",mas[i][j]);
sum[i]+=mas[i][j];
}
printf("\n");
}
printf("Row sums:\n");
for(i=0;i<n;i++)
{
printf("%d\t",sum[i]);
if(sum[i]>max)
{
maxi=sum[i];
printf("%d is MAX - %d\n",i,maxi);
}
if(sum[i]<min)
{
mini=sum[i];
printf("%d is MIN - %d\n",i,mini);
}
}
getch();
}Решение задачи: «Найти строку матрицы с наибольшей и наименьшей суммой элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int
sum(int *v, int n)
{
int i, s;
s = 0;
for (i = 0; i < n; i++)
s += v[i];
return s;
}
#define M 4
#define N 4
#define FMT "%s row=%d sum=%d\n"
int
main(void)
{
int i, j, s, smin, smax, imin, imax, a[M][N];
srand(time(NULL));
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
a[i][j] = rand() % (M*N);
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++)
printf("%2d\t", a[i][j]);
printf("\n");
}
imin = imax = 0;
smin = smax = sum(a[0], M);
for (i = 1; i < N; i++) {
s = sum(a[i], M);
if (s < smin) {
smin = s;
imin = i;
}
if (s > smax) {
smax = s;
imax = i;
}
}
printf(FMT, "min", imin, smin);
printf(FMT, "max", imax, smax);
return 0;
}