Программа Rerun & End - PullRequest
       0

Программа Rerun & End

0 голосов
/ 14 апреля 2020

Я пытаюсь заставить эту программу на C ++ работать так, чтобы программа перезапускалась сама, когда вводится «y», а когда вводится «n», она останавливается и просто просит пользователя ввести любую клавишу, чтобы завершить ее. Он не работает, так как он просто продолжает работать, даже когда введено «n». Что я пробовал:

#include <iostream>
int main() {
// variables
int width;
int length;
    char again; // to hold y or n input

cout << "Enter length of rectangle";
cin >> length;
cout << "Enter width of rectangle";
cin >> width;
cout << "The area of the rectangle is" << length * width;
cout << "The perimeter of the rectangle is" (length  * length) * (width * width);

    // Asks user if they want to play again
       cout << "Would you like to play again? (y/n):";
       cin >> again;
    } else if (again == 'n') {
      cout << "Press any key to continue." << endl;
      cin.ignore(1);
    }
}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020
    #include <iostream>
using namespace std;

int main() {
    // variables
    int width;
    int length;
    char again; // to hold y or n input
    do {
        cout << "Enter length of rectangle";
        cin >> length;
        cout << "Enter width of rectangle";
        cin >> width;
        cout << "The area of the rectangle is" << length * width;
        cout << "The perimeter of the rectangle is" << (length * length) * (width * width);

        // Asks user if they want to play again
        cout << "Would you like to play again? (y/n):";
        cin >> again;

        if (again == 'n') {
            cout << "Press any key to continue";
        }

    } while (again == 'y');
}

В приведенном выше коде я добавил al oop, который позволит пользователю go вернуться к началу при вводе 'y'. Кроме того, вы не можете использовать (иначе if) без использования (if) сначала.

Заключение, просто добавьте al oop, что отправит пользователя обратно в начало, как показано выше.

Надеюсь, это поможет:)

0 голосов
/ 14 апреля 2020

Итак, здесь есть ошибка, вы проверяете переменную again, прежде чем задать вопрос. Очевидно, что вы должны проверить переменную после , когда вы задаете вопрос.

Также вам нужно использовать ignore после того, как вы получите ответ на вопрос, потому что все еще будет ввод в буфере .

char again; // to hold y or n input

// Asks user if they want to play again
cout << "Would you like to play again? (y/n):";
cin >> again;
// ignore any remaining input
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
if (again == 'y'){
    ...
} else if (again == 'n') {
  cout << "Press any key to continue." << endl;
  cin.ignore(1);
}

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

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