Как найти наименьшую сумму строк (2D массив) C программирования - PullRequest
0 голосов
/ 19 декабря 2018

Это хорошо для нахождения наибольшего числа и его ряда, но я не знаю, как найти наименьшую сумму.Я пытался сравнить это как mat [i] [j] <сумма строки, но это не работает.Если вы можете помочь мне немного </p>

 #include <stdio.h>
#include <stdlib.h>

int main()

{
    int i, j,n, sum_row, min_row;

printf("Enter the size of an array: ");
scanf("%d", &n);
int mat[n][n];

printf("\nEnter numbers in array:");
for(i=0;i<n; i++){
    for (j=0;j<n;j++){
        scanf("%d", &mat[i][j]);
    }
}



min_row=mat[0][0];
for(i=0;i<n;i++){
        sum_row=0;
    for (j=0;j<n;j++){
            sum_row +=mat[i][j];


       if(mat[i][j]<sum_row)
            sum row=mat[i][j];
           /*  min_row=i; */

    }
}
printf("The smallest sum in rows is: %d, and row looks like", sum_row);


/*for(j=0;j<n;j++){
    printf(" %3d", min_row);
}*/





    return 0;
}

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Полагаю, n> = 1

int min_row =0;
int i, j;

// min_row is first the sum for first row
for (j=0;j<n;j++)
  min_row +=mat[0][j];

// look at other rows
for (i=1; i<n; i++) {
  // compute current row sum
  int sum_row = 0;

  for (j=0;j<n;j++)
    sum_row +=mat[i][j];

  // look at who is the smallest
  if(sum_row < min_row)
    min_row = sum_row;
}

printf("The smallest sum in rows is: %d", min_row);
0 голосов
/ 19 декабря 2018

Я думаю, что комментарии, предоставленные несколькими людьми, уже указывают вам направление.Я просто суммирую все изменения, необходимые для проверки.

#include <stdio.h>
#include <stdlib.h>

int main()

{
    int i, j,n, sum_row, min_row;

    printf("Enter the size of an array: ");
    scanf("%d", &n);
    int mat[n][n];

    printf("\nEnter numbers in array:");
    for(i=0;i<n; i++){
        for (j=0;j<n;j++){
            scanf("%d", &mat[i][j]);
        }
    }

    min_row = - 1;        // row index
    int row_min = 1<<31; // some large number, here I assume int is 32 bit on your machine.  this var saves the min value of row sum

    for(i=0;i<n;i++){
        sum_row = 0;

        for (j=0;j<n;j++){
            sum_row += mat[i][j];


            if(sum_row < row_min) {
                row_min = sum_row;
                min_row = i;
            }

        }
    }

    printf("The smallest sum in rows is: %d, and row looks like %d", row_min, min_row);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...