Логические операторы в C#, не могу разобраться. Пожалуйста помогите
Суть в том что если я пенсионер или студент и не трудоустроен, то получаю кредит, а если трудоустроен не получаю кредит.
Ну а если я, и пенсионер и студент,(трудоустройство тут не имеет значения) то не должен получить.
Какие есть способы решить эту задачу, подставил все возможное и что-нибудь да не сходится(
Объясните пожалуйста если не сложно. Спасибо!
Console.Write("Как вас зовут?: ");
string name = Console.ReadLine();
Console.Write($"{name} являетесь ли вы пенсионером?: ");
bool isPensioner = Console.ReadLine().Contains("да");
Console.Write($"{name} являетесь ли вы студентом?: ");
bool isStudent = Console.ReadLine().Contains("да");
Console.Write($"{name} вы уже трудоустроены?: ");
bool isEmployment = Console.ReadLine().Contains("да");
bool creditAllowed = isPensioner ^ isStudent ^ isEmployment;
Console.Write($"{name} имеет право получить кредит: {creditAllowed}");
Console.ReadKey();
Ответы (2 шт):
var creditAllowed = (isPensioner ^ isStudent) && !isEmployment;
Первой скобкой с оператором xor мы проверяем, не является ли у нас человек одновременно студентом и пенсионером, т.к. при true ^ true мы получим false и кредит не будет выдавать, даже не проверяя трудоустройство, т.к. используется оператор &&, который при не выполняет проверку правого выражения, если левое ложно. А оператор ! мы используем в соответствии с условием.
- ! - логическое НЕ
- && - логическое И
- ^ - логическое исключающее ИЛИ (назовём его ЛИБО)
Кредит если (НЕ трудоустроен) И (пенсионер ЛИБО студент):
bool creditAllowed = !isEmployment && (isPensioner ^ isStudent);