2017-01-10 4 views
-4

Я работаю над викториной для своей семестровой работы. Это просто, так как я новичок. И я хотел позволить пользователю вставить символ параметра, но он не останавливается после ввода символа, и я не знаю, как его решить.Как закончить эту функцию? (C++)

int giveAnswera (string answer) 
{ 
    int x = 0; 
    cout << "Enter the answer in form of a, b or c." << endl; 
    cin >> answer; 
    if (cin >> answer == "a") 
    { 
     cout << "✓" << endl; 
     cout << "Well done." << endl; 
     x = x+2; 
    } 
    else 
    { 
     cout << "×" << endl; 
     cout << "You're wrong. You get no points." << endl; 
     x = x+0; 
    } 
return x; 
} 
+5

Не должен 'if (cin >> answer ==" a ")' просто быть 'if (answer ==" a ")'? –

+0

зачем вводить ответ внутри функции и передавать также значение для ответа через параметр? вы можете выбрать один из двух, в противном случае это плохая идея. также 'if (cin >> answer ==" a ")' не проверяет строковое значение, но вместо этого проверяет, был ли вход корректным или 'correct' не означает« a », но был присвоен действительный тип данных, – Raindrop7

ответ

2

В C++ 11 он не компилируется.

В C++ 03, он делает компиляции, но вы пытаетесь прочесть дважды с cin >> answer, а функция застрял в ожидании второго входа.
Условие должно быть только answer == "a".

И так как вы не используете значение параметра функции для чего-нибудь, вы должны удалить его и использовать локальную переменную вместо:

int giveAnswera() 
{ 
    string answer; 
    int x = 0; 
    cout << "Enter the answer in form of a, b or c." << endl; 
    cin >> answer; 
    if (answer == "a") 
    { 
     cout << "✓" << endl; 
     cout << "Well done." << endl; 
     x = x+2; 
    } 
    else 
    { 
     cout << "×" << endl; 
     cout << "You're wrong. You get no points." << endl; 
    } 
    return x; 
} 
+0

Большое вам спасибо, ты мой спаситель! –

0

Вы не должны использовать

if(cin >> answer == "a") 

вместо Использовать

cin >> answer; 
if(answer == "a")