#c #if-statement #nested-if
#c #оператор if #вложенный оператор if
Вопрос:
Обновлено, чтобы более точно описать проблему
Язык C Я пытаюсь использовать вложенный оператор if if для целей обучения (руководство следует вместе с). Я знаю, что логический оператор amp;amp; был бы идеальным для этой ситуации. В любом случае…
Вложенный оператор If If пропускает возможность пользователя ввести данные для второго вопроса, когда первое предположение равно первому ответу. Когда первое предположение неверно, все выполняется по назначению (выполняются как вопросы, так и запрос пользовательского ввода)
Я могу ошибаться, но я чувствую, что все соответствует руководству, но я продолжаю сталкиваться с проблемой, о которой я упоминал. Кто-нибудь получил ответ? 🙂
Спасибо 🙂
#include <iostream>
#include <string>
int main ()
{
std:: string variable_one_guess;
std:: string variable_two_guess;
std:: string variable_one_answer = "The answer for one";
std:: string variable_two_answer = "The answer for two";
std:: cout << "Guess the variable one valuen";
std:: cin >> variable_one_guess;
std:: cout << "Guess the variable two valuen";
std:: cin >> variable_two_guess;
if (variable_one_guess == variable_one_answer) // I am aware I can just combine both if statements using the logical
// amp;amp; operator but I need this to work for learning purposes
{
if(variable_two_guess == variable_two_answer)
{std:: cout << "Correct!n";}
}
}
Комментарии:
1.
std:: cin >> variable_one_guess;
считывает единственное слово, разделенное пробелом. Используйтеgetline(std::cin, variable_one_guess);
.2. @Quentin Это похоже на ответ. Даже объясненный.
3. Вы можете проверить объяснение Квентина, используя
The_answer_for_one
(обратите внимание на отсутствие пробелов) в качестве секрета и ввода. Если это сработает, то примените предложенный Квентином код и посмотрите, работает ли он с пробелами и без них. Если это произойдет, вы можете создать свой собственный ответ (и даже принять его). Это исключило бы этот вопрос из списка вопросов без ответов.4. Ответ Квентина работает и имеет смысл, я знаю лучше, чем это! XD В руководстве использовался только int, а я использовал строки для практики и забыл об этом. Спасибо вам обоим за помощь 🙂 PS не удается принять мой ответ в течение двух дней.
Ответ №1:
Квентин правильно привлек мое внимание к функции getline, которая работает. cin считывает единственное слово, разделенное пробелом. Поэтому мне пришлось заменить cin на функцию getline.
//code
std:: cin >> variable_one_guess;
// code
std:: cin >> variable_two_guess;
//code
был заменен как
//code
getline(std::cin, variable_one_guess);
// code
getline(std::cin, variable_two_guess);
//code