Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Если в поле ответа ввести два раза переменную через пробел, то засчитывается два вопроса C++

Олег Осипов Ученик (100), открыт 3 недели назад
Если ответить 'a a' или '1 1', то не срабатывает while (не выводит "Я вас не понимаю") и засчитывает два вопроса сразу. переменная записана как string. если записать в ответе один раз, то засчитывает один вопроспытался через getline, но тогда не срабатывает ничего и если ввести повторно, то сработает и переведет на вторую строку
2 ответа
Николай Веселуха Высший разум (368854) 3 недели назад
 #include <array> 
#include <iostream>

using namespace std;

int main() {
system("chcp 1251 > nul");
const array<const char*, 4> checklist{
"У вас есть насморк?",
"У вас болит горло?",
"У вас есть частый кашель?",
"У вас есть высокая температура?"
};
int point;
auto result = 0;
for (const auto& question : checklist) {
do {
cout << question << '\n';
cout << "1. Да" << '\n';
cout << "2. Нет" << '\n';
cin >> point;
if (1 == point) {
++result;
break;
}
} while (point != 2);
}
cout << "Результат: " << result << " / " << checklist.size() << '\n';
system("pause > nul");
}
Николай ВеселухаВысший разум (368854) 3 недели назад
 #include <array>
#include <iostream>
using namespace std;
int main() {
system("chcp 1251 > nul");
const array<const char*, 4> checklist{
"У вас есть насморк?",
"У вас болит горло?",
"У вас есть частый кашель?",
"У вас есть высокая температура?"
};
int point;
auto result = 0;
for (const auto& question : checklist) {
do {
cout << question << '\n';
cout << "1. Да" << '\n';
cout << "2. Нет" << '\n';
cin >> point;
cin.ignore(0x1000, '\n');
if (1 == point) {
++result;
break;
}
} while (point != 2);
}
cout << "Результат: " << result << " / " << checklist.size() << '\n';
system("pause > nul");
}
Зло Просветленный (39206) 3 недели назад
Добавь
 cin.ignore(256, '\n'); 
после чтения ответа. Проверял на коде Николая
Похожие вопросы