Есть ли более эффективный способ сделать тест и получить два разных результата, основанных на том, если ответы в основном да / нет? - PullRequest
0 голосов
/ 26 октября 2019

Это тест, который определяет, любит ли пользователь яйца или нет, основываясь на том, если хотя бы 50% его ответов - да или правда.

Console.WriteLine ("This quiz will find out if you like eggs");

Console.WriteLine ("Do you like ketchup? (yes/no)");
string quiz1 = (Console.ReadLine());
bool quiza1 = (quiz1.Contains("yes"));

Console.WriteLine ("Do you like bread? (yes/no)");
string quiz2 = (Console.ReadLine());
bool quiza2 = (quiz2.Contains("yes"));

Console.WriteLine ("Do you like to read? (yes/no)");
string quiz3 = (Console.ReadLine());
bool quiza3 = (quiz3.Contains("yes"));

Console.WriteLine ("Do you like soda? (yes/no)");
string quiz4 = (Console.ReadLine());
bool quiza4 = (quiz4.Contains("yes"));

if (quiza1 == true && quiza2 == true || quiza1 == true && quiza3 == true || quiza1 == true && quiza4 == true || quiza2 == true && quiza3 == true || quiza2 == true && quiza4 == true || quiza3 == true && quiza4 == true)
{
    Console.WriteLine ("You probably like eggs");
}
else
{
    Console.WriteLine ("I don't think you like eggs");
}

Я специально ищу заменить if утверждение с чем-то более компактным.

Ответы [ 2 ]

3 голосов
/ 26 октября 2019

Вы можете сделать все в цикле и просто посчитать количество тех, кто ответит "да":

string[] quizzes = new string[]
{
    "Do you like ketchup? (yes/no)",
    "Do you like bread? (yes/no)",
    "Do you like to read? (yes/no)",
    "Do you like soda? (yes/no)"
}

int truecount = 0;
foreach(var quiz in quizzes)
{
    Console.WriteLine (quiz);
    if(Console.ReadLine().ToLower().Contains("yes"))
        truecount++;
}

if(truecount > quizzes.Length / 2) // here it is your choice to use > or >= or even more cases like if(truecount == quizzes.Length) you love eggs else if ....
{
  Console.WriteLine ("You probably like eggs");
}
else
{
  Console.WriteLine ("I don't think you like eggs");
}
0 голосов
/ 26 октября 2019

Вы можете посчитать количество ответов да и использовать это условие:

int countyes  = 0;

Console.WriteLine ("Do you like ketchup? (yes/no)");
string quiz1 = (Console.ReadLine());
if (quiz1.Contains("yes"))
    countyes++;
//repeat for all questions
if (countyes >= 2)
    Console.WriteLine ("You probably like eggs");
else
    Console.WriteLine ("I don't think you like eggs");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...