Сумма отрицательных и положительных целых чисел приводит к неожиданному выводу — c

#c #arrays

Вопрос:

У меня есть 2D-массив, желающий проверить, равна ли сумма (каждого) столбца 0 или нет. Более того, добавление к целым числам из массива, похоже, приводит к неожиданному результату.

 #include<bits/stdc  .h>
using namespace std;
int main() {
long long int lines;
int temp;
int is_0 = 1;
cin>>lines;
int numbers[3][lines];
for(int i = 0; i < 3; i  ){
    for(int j = 0; j < lines; j  ){
        cin>>temp;
        numbers[i][j]=temp;
    }
}

for(int i = 0; i<3; i  ){
    temp = 0;
    for(int j = 0; j<lines;j  ){
        temp  = numbers[i][j];          
    }
    cout<<temp<<endl;
}
return 0;
}
 

пример ввода:

 2
1
1
1
-1
-1
-1
 

пример вывода:

 2
0
-2
 

Есть идеи?

Комментарии:

1. Похоже, вам может понадобиться научиться использовать отладчик для пошагового выполнения вашего кода. С хорошим отладчиком вы можете выполнить свою программу построчно и посмотреть, где она отклоняется от того, что вы ожидаете. Это важный инструмент, если вы собираетесь заниматься каким-либо программированием. Дальнейшее чтение: как отлаживать небольшие программы и руководство по отладке

2. Это не решает вопрос, но код не нуждается temp в цикле ввода. std::cin >> numbers[i][j]; работает просто отлично.

3. Нарисуйте картинку; какие значения куда идут, когда код считывает входные данные? Какие значения идут куда, когда в циклах, которые вычисляют суммы? Подсказка: название lines вводит в заблуждение.

4. cin>>lines; int numbers[3][lines]; похоже на VLA. Я думал, что VLA не является стандартом в C . Возможно, в этом случае используется расширение компилятора?

Ответ №1:

Программа работает так, как ожидалось. Вы создаете следующую матрицу

  1   1
 1  -1
-1  -1
 

и здесь

 for(int i = 0; i<3; i  ){
    temp = 0;
    for(int j = 0; j<lines;j  ){
        temp  = numbers[i][j];          
    }
    cout<<temp<<endl;
}
 

Вы суммируете номера каждой строки.

Комментарии:

1. Круто! 1 Это показывает разницу между проверкой и проверкой . . .