Почему мой двумерный массив выводит неверные значения? - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь вывести сумму столбцов 1, 4 и 6. Когда я ввожу 30 единиц в мой 2d массив, это то, что я получаю в результате:

Sum of 1st column is: 6
Sum of 1st column is: 12
Sum of 1st column is: 18
Sum of 1st column is: 24
Sum of 1st column is: 30
Sum of 4th column: 3
Sum of 4th column: 6
Sum of 4th column: 9
Sum of 4th column: 12
Sum of 4th column: 15
Sum of 6th column is: 1
Sum of 6th column is: 2
Sum of 6th column is: 3
Sum of 6th column is: 4
Sum of 6th column is: 5
#include <stdio.h>

int main()
{
    int i, j, sum1=0, sum2=0, sum3=0, arr[5][6];
    int value;

    for(i=0; i < 5; i++){
        for(j=0; j<6; j++){
            printf("Enter a value: ");
            scanf("%d",&value);
            arr[i][j]=value;
        }
    }

    printf("Two Dimensional array elements:\n");
    for(i=0; i<5; i++) {
      for(j=0;j<6;j++) {
         printf("%d ", arr[i][j]);
         if(j==5){
            printf("\n");
         }
       }
    }

    //this functions calculate the sum of the 1st column//
    for(i=0; i<5; i++){
        for(j=0; j<6; j++){
            sum1 = arr[i][j] + sum1;
        }
        printf("Sum of 1st column is: %d\n", sum1);
    }

    //this functions calculate the sum of the 4th column//
    for(i=0; i<5; i++){
        for(j=3; j<6; j++){
            sum2 = arr[i][j] + sum2;
        }
        printf("Sum of 4th column: %d\n", sum2);
    }

    //this functions calculate the sum of the 6th column//
    for(i=0; i<5; i++){
        for(j=5; j<6; j++){
            sum3 = arr[i][j] + sum3;
        }
        printf("Sum of 6th column is: %d\n", sum3);
    }

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

По сути, StoneThrow уже указал причину, но, похоже, в коде, касающемся циклов, есть ошибка, например, в первом цикле добавления первого столбца вы фактически добавляете всю матрицу, так какувеличивая число для строк и столбцов.

Код должен выглядеть примерно так:

//Addition for column one
for(i=0;i<5;i++){
    sum1=arr[i][0]+sum1;
    printf("Sum of 1st column is: %d\n", sum1);
}

//Addition for column four
for(i=0;i<5;i++){
    sum2=arr[i][3]+sum2;
    printf("Sum of the 4th column is: %d\n", sum2);
}

//Addition for column six
for(i=0;i<5;i++){
    sum3=arr[i][5]+sum3;
    printf("Sum of the 6th column is: %d\n", sum3);
}

Итак, просто следите за циклом, это не нужнобыть вложенным, так как вы на самом деле просто используете одну из групп массива в качестве переменной, а другую в качестве константы.

0 голосов
/ 15 марта 2019

Исходя из ваших printfs, я предполагаю, что вы хотите напечатать суммы столбцов 1, 4 и 6.

Давайте просто подумаем о столбце 0 для простоты - вы можетелегко расширите это.

У вас есть двумерный массив, и вы хотите получить сумму чисел в столбце 0. Подумайте о том, как вы будете проходить итеративно через этот массив, чтобы достичь этого.Вы хотите, чтобы ваш столбец был зафиксирован на 0 и просто увеличивался по строкам - имеет ли это смысл?

Вот один из многих способов сделать это:

//this functions calculate the sum of the 1st column//
    for(i=0; i<5; i++){
    sum1 = arr[i][0] + sum1;
    }
printf("Sum of 1st column is: %d\n", sum1);

Делает ли этосмысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...