Найти строку матрицы с наибольшей и наименьшей суммой элементов - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д