Не могу вернуть это к циклу.C ++ - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь вернуть его в цикл, если они вводят что-либо из вариантов.каждый раз, когда я ввожу 4, это просто заканчивается.и если я выберу правильный, он тоже заканчивается.Могу ли я в любом случае попросить пользователя ввести правильный?

void towsoncourse ()
{
    cout << "Enter Course: 1 is COSC,2 is ENGL,3 is MATH" << endl;
    int course;
    bool finish;

    bool finishcourse = true;
    cin >> course;

    while (finishcourse != true)
    {
        cout << "Enter correct number for course" << endl;
        if (course == 1 || course == 2 | course == 3)
        {
            finish = true;
        }
        else
        {
            cout<< "Error: Enter number corresponding to course." << endl;
        }
     }

     switch (course)
     {
        case 1:
            cout << "COSC" << endl;
            break;
        case 2:
            cout << "ENGL" << endl;
            break;
        case 3:
            cout << "MATH" << endl;
            break;
        default:
            cout << "Error: Enter number corresponding to course" << endl;
    }
}

int main ()
{
  towsoncourse ();

  return 0;
}

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Были некоторые проблемы с кодом.

1) while (finishcourse != true) условие было неверным.Это должно быть while (finishcourse == true).

2) finish = true; назначение было неверным.Это должно было быть finishcourse = false;

3) cin >> course; должно быть взято внутри цикла.Потому что, если вы поместите его снаружи, это приведет к бесконечному циклу в случае неправильного ввода.

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

#include <iostream>

using namespace std;

void towsoncourse ()
{
    bool finishcourse = true;

    while (finishcourse == true)
    {
        int course;
        cout << "Enter Course: 1 is COSC,2 is ENGL,3 is MATH" << endl;
        cin >> course;

        switch (course)
         {
            case 1:
                cout << "COSC" << endl;
                finishcourse = false;
                break;
            case 2:
                cout << "ENGL" << endl;
                finishcourse = false;
                break;
            case 3:
                cout << "MATH" << endl;
                finishcourse = false;
                break;
            default:
                cout << "Error: Enter number corresponding to course." << endl;
        }
     }
}

int main ()
{
  towsoncourse ();

  return 0;
}
0 голосов
/ 18 декабря 2018

Не полный ответ, а скорее руководство, указывающее путь.

Вы хотите продолжать читать ввод, пока он не станет одним из 3 возможных значений.Таким образом, хорошее место для чтения и проверки входных данных будет внутри цикла, выход из которого возможен только при выполнении условий теста.

, в то время как тестирование циклов продолжает критерии перед каждым выполнением.критерий do Loop Test продолжить после каждого выполнения.В вашем случае необходимо выполнить хотя бы один раз.

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