С++ частично запускает программу, пока я не переключусь на оболочку DOS

Пример C++ INTRO14.CPP из Turbo C++

#include <iostream.h>

int main ()
{

    int your_number;
    cout << "Enter a whole number: ";
    cin >> your_number;

    if (your_number % 2 == 0)
       cout << "\nYour number is even\n";

    if (your_number % 2 != )
    {
       cout << "Your number is odd.\n";

    }

    cout << "That's all!\n";
}

Я получаю только сообщение Введите целое число. Когда я ввожу нечетное или четное число, программа, кажется, завершается.

Я получаю сообщение, что ваш номер четный (или нечетный) только после того, как я возвращаюсь в оболочку DOS.

Почему я получаю только частичный вывод, когда нажимаю RUN из IDE?


person James    schedule 22.02.2021    source источник
comment
Я понятия не имел, что люди до сих пор используют Turbo C++. В последний раз я использовал это программное обеспечение около 23 лет назад. Что мешает вам использовать современный компилятор и IDE?   -  person paddy    schedule 22.02.2021
comment
Это классическая проблема с Turbo-C++. Он не ожидает вывода, когда программа завершается. Затем вы можете увидеть вывод в окне вывода (нет необходимости возвращаться в оболочку). Кроме того, общий обходной путь — добавить что-то вроде getch() или system("pause") в конце main. Отвечает ли это на ваш вопрос? Нет вывода при запуске программы   -  person brc-dd    schedule 22.02.2021
comment
Почему Турбо С++? Есть множество других, гораздо лучших компиляторов, доступных бесплатно.   -  person tadman    schedule 22.02.2021
comment
#include <iostream.h> не является стандартным С++ и не будет компилироваться ни одним компилятором за последние 2 десятилетия. Это только один пример того, почему вам не следует использовать borland C++.   -  person bolov    schedule 22.02.2021
comment
используйте getch() в конце, он будет ждать, пока не будет нажата любая кнопка. Вы увидите сообщение.   -  person ILoveLogCat    schedule 22.02.2021
comment
Turbo C++ более чем на десять лет старше первого стандарта C++ (C++98), поэтому вы не сможете получить какие-либо полезные знания C++, кроме того, для него сложнее найти документацию.   -  person phuclv    schedule 22.02.2021
comment
IIRC [ALT+F5] или просто [F5] переключаться между исходным кодом и результатом вашего приложения после его завершения... getch() добавление в конец поможет, но в DOSBOX вы можете добавить как минимум 3 из них последовательно, так как это дает сбои   -  person Spektre    schedule 22.02.2021


Ответы (1)


Как упоминалось в комментарии, используйте getch() в конце программы.

Теперь, почему вы должны его использовать?
Sкраткий ответ< br> Потому что вывод показывается на консоль за миллисекунды. Вывод отображается, но слишком быстро, чтобы его мог увидеть пользователь. И Turbo C++ не должен его контролировать. Таким образом, вы должны использовать оператор getch().
Как упоминалось в комментарии, иногда один getch() не работает. Таким образом, я использую его три раза.

Это должно выглядеть так: -

#include <iostream.h>

int main ()
{

int your_number;
cout << "Enter a whole number: ";
cin >> your_number;

if (your_number % 2 == 0)
   cout << "\nYour number is even\n";

if (your_number % 2 != )
{
   cout << "Your number is odd.\n";

}
 
cout << "That's all!\n"; 
getch();
getch();
getch();
}

Есть еще одна альтернатива: -

getchar()
person ILoveLogCat    schedule 22.02.2021
comment
в DOSBOX getch() обычно дает сбои, поэтому иногда необходимо использовать несколько из них последовательно (например, 3) - person Spektre; 22.02.2021
comment
Хорошо, я этого не знал. - person ILoveLogCat; 22.02.2021
comment
один getch(); работает, когда я добавляю #include ‹conio› Спасибо - person James; 24.02.2021