Нажмите Enter, чтобы продолжить, или q, чтобы выйти из С++.

Я пишу программу на С++, которая отображает 2 вывода человека, чтобы он выглядел так, как будто он прыгает, если вы нажмете ввод. Если вы введете «q», программа должна остановиться. Это насколько я понял.

// Эта программа отобразит прыгающего человека.

включать

включать

использование пространства имен std;

int main () {
string user_input;

 do
{
    cout << endl << endl << endl << endl << endl << endl << endl
         << endl << endl << endl << endl << endl << endl << endl
         << endl << endl << endl << endl << endl << endl << endl 
         << endl << endl << endl << endl << endl << endl;

    cout <<  "  O" << endl;
    cout << " /|\\" << endl;
    cout << " ( )" << endl;
    cout << "------------------------------------------------------------" << endl;

    cout <<   "Press ENTER to continue or enter q to quit:";

    getline(cin, user_input);

    cout << endl << endl << endl << endl << endl << endl << endl
         << endl << endl << endl << endl << endl << endl << endl
         << endl << endl << endl << endl << endl << endl << endl 
         << endl << endl << endl << endl << endl << endl;

    cout << " \\O/" << endl;
    cout << "  | " << endl;
    cout << " / \\" << endl << endl;
    cout << "------------------------------------------------------------" <<endl;
    cout <<   "Press ENTER to continue or enter q to quit:";
} while(getline(cin, user_input));

return 0;

}

Я пытался в течение нескольких часов, и я до сих пор не могу понять, как остановить программу, если вы введете q.

Я пробовал варианты оператора while, такие как

в то время как (getline (cin, user_input) && user_input =! 'q')

но это не работает. Любая помощь вообще будет высоко оценена.


person Micah Woodard    schedule 26.09.2017    source источник


Ответы (2)


Это похоже на домашнюю работу, а это значит, что это не место спрашивать. Но я бы предположил, что это может быть как-то связано с отсутствием каких-либо операторов if для проверки значения, заданного пользователем. И ваша другая попытка не удалась из-за того, что getline получает всю новую строку, а не только «q» в этом случае. Вот еще Getline продолжает получать символ новой строки. Как этого избежать?. Вы можете заменить проверку, которую вы пробовали, на while(getline(cin,string) && string != "q\n") Изменить: я хотел, чтобы это был комментарий, но не имел репутации.

person JoyStickFanatic    schedule 26.09.2017
comment
Это не домашнее задание, я просто пытаюсь изучить кодирование на С++ и занимаюсь ранними занятиями в книге, по которой я учусь. Спасибо за вашу помощь. - person Micah Woodard; 26.09.2017
comment
Хорошо, круто, что вы можете сделать, так это реорганизовать свой цикл, чтобы проверка не была такой, как эта, в то время как (читать из cin и проверять), больше похожая на: {код цикла ..... getline(cin,user_input); bool input = user_input != q\n;} while(input) \n — escape-символ для новой строки и печатает так же, как endl, но содержится в строке - person JoyStickFanatic; 26.09.2017
comment
Я не совсем понимаю, что вы имеете в виду. Не могли бы вы описать подробнее? - person Micah Woodard; 26.09.2017
comment
`cout‹‹нажмите Enter, чтобы продолжить q, чтобы выйти; getline(cin,user_input); result = user_input != q // устанавливаем результат вне заголовка цикла. while(result) //продолжаем, пока результат истинен (user_input не равен q). Хотя я люблю использовать этот стиль. - person JoyStickFanatic; 26.09.2017

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

включать

включать

использование пространства имен std;

интервал основной () {

строка user_input; Целый счетчик = 0;

do
{
    if ( counter % 2 == 0)
    {
        cout << endl << endl << endl << endl << endl << endl << endl
        << endl << endl << endl << endl << endl << endl << endl
        << endl << endl << endl << endl << endl << endl << endl 
        << endl << endl << endl << endl << endl << endl;

        cout <<  "  O" << endl;
        cout << " /|\\" << endl;
        cout << " ( )" << endl;
        cout << "------------------------------------------------------------" << endl;
    }

     if ( counter % 2 != 0)
     {
        cout << endl << endl << endl << endl << endl << endl << endl
         << endl << endl << endl << endl << endl << endl << endl
         << endl << endl << endl << endl << endl << endl << endl 
         << endl << endl << endl << endl << endl << endl;

        cout << " \\O/" << endl;
        cout << "  | " << endl;
        cout << " / \\" << endl << endl;
        cout << "------------------------------------------------------------" <<endl;
     }

    cout << "Press ENTER to continue or enter q to quit:";
    getline (cin, user_input);

    if (user_input == "q")
{
    return 0;
}
counter = counter + 1;
} while (user_input != "q");
return 0;

Если цикл повторяется, обозначаемый счетчиком int, который прибавляет единицу к каждому циклу, программа даже отображает стоящего человека. Затем отобразится приглашение «Нажмите ENTER, чтобы продолжить, или 'q', чтобы выйти:». Он продолжается, если пользователь вводит ENTER, getline (cin, user_input). Если пользователь вводит 'q', цикл прерывается (возврат 0;). Если цикл повторяется, если пользователь нажимает ENTER, то счетчик становится нечетным, и программа отображает прыгающего человека.

person Micah Woodard    schedule 27.09.2017