Я ввел GrammyHost
класс и список хостов грамматики:
class GrammyHost
{
public GrammyHost(string name, int year)
{
Name = name;
Year = year;
}
public string Name { get; }
public int Year { get; }
public bool ShouldHostGrammyThisYear(int thisYear)
{
if (thisYear < Year)
{
return false;
}
return ((thisYear - Year) % 3) == 0;
}
}
class Program
{
private static void Main(string[] args)
{
Console.Write("Enter the year: ");
// Let's create a list of possible hosts
var grammyHosts = new List<GrammyHost>
{
new GrammyHost("Tupac", 1970),
new GrammyHost("Usher", 1971),
new GrammyHost("Mario", 1972)
};
var thisYear = 0;
thisYear = int.Parse(Console.ReadLine());
// Search for this year host
var thisYearHost = grammyHosts
.FirstOrDefault(host => host.ShouldHostGrammyThisYear(thisYear));
// If it's null then there is no host this year...
if (thisYearHost is null)
{
Console.Write("No host this year...");
}
else // Otherwise print the host
{
Console.Write("Hello {0}, you are the host of year {1}", thisYearHost.Name, thisYear);
}
Console.ReadLine();
}
}
Ваши условия были неверными. Посмотрите на метод ShouldHostGrammyThisYear
в классе GrammyHost
:
if (thisYear < Year)
{
return false;
}
return ((thisYear - Year) % 3) == 0;
Сначала мы проверим, является ли этот год действительным в контексте текущего человека. Хост не может вернуться во времени, поэтому, если thisYear
предшествует GrammyHost.Year
, мы возвращаем false без дальнейших проверок.
Затем, если вы посмотрите на оператор return, мы вычислим разницу, чтобы узнать, сколько лет прошло sinced GrammyHost.Year
до thisYear
и проверьте, делится ли разница на 3. Другими словами, разница говорит нам, сколько лет прошло с тех пор, как хост впервые принял Грэмми, и если эта разница делится на 3, то это означает, что хост должен принять Грэмми в этом году.
например, скажем, thisYear
- это 1973, а GrammyHost.Year
- это 1970 (Тупа c). Разница составляет 1973 - 1970 = 3
. Мы проверяем, делится ли он на 3, используя оператор %
для вычисления остатка, а затем сравнивая его (остаток) с нулем. В случае Tupac
разница равна 3, и она действительно делится на 3, поэтому 3% 3 приведет к 0.
Если остаток не равен нулю, то это означает, что разница не делится на 3, поэтому хост не должен принимать Грэмми в этом году.
Также я думаю, что нет необходимости в коммутаторе.