Программа отдаёт разные ответы в разных компиляторах

239
03 января 2018, 19:39

В онлайн компиляторе код (http://cpp.sh/4gnfb) при вводе:

4 1 2 3 4

выводит YES, а в Visual Studio - выводит NO.
Если вкратце, то код должен вывести YES, если среди N чисел присутствует 0. Я знаю, что это можно было бы написать проще и лаконичнее, мне важна сама проблема разного вывода. В чём может быть проблема? В онлайн компиляторе я потыкал разные версии c++, результат один и тот же.

Код ниже:

int main()
{
    int N, i = 0, a;
    cin >> N;
    bool NovyiGod2018;
    while (i < N)
    {
        cin >> a;
        if (a == 0)
        {
            NovyiGod2018 = 1;
        }
        else if (NovyiGod2018 != 1)
        {
            NovyiGod2018 = 0;
        }
        ++i;
    }
    if (NovyiGod2018 == 1)
    {
        cout << "YES";
    }
    else
    {
        cout << "NO";
    }
}
Answer 1

Проблема - в неинициализированной переменной bool NovyiGod2018; Исправьте на

bool NovyiGod2018 = false;

в вашем онлайн-компиляторе, и получите NO.

И - для того и тип bool, чтоб иметь значения true/false - лучше использовать для него именно эти значения, а не 0/1...

READ ALSO
Переменные захлебываются (C++)

Переменные захлебываются (C++)

Не могу понять почему переменные "захлебываются" после введения второй и тдзаписи

293
Где указатель хранит значение

Где указатель хранит значение

Если указатель хранит адресс ячейки, то где хранится само значение?? например где хранится число 5?

241
Что означают данные строки в коде?

Что означают данные строки в коде?

Что ознают данные строки в коде ?

270