По номеру года вывести его название - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, умы

Есть вот такая вот задача:

В восточном календаре принят 60-летний цикл, состоящий из 12- летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года вывести его название, если 1984 год был началом цикла — годом зеленой крысы. Написать программу с использованием оператора switch/case.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Третее_задание
{
    class Program
    {
        static void Main(string[] args)
        {
            int raschet, year;
            string year_name;
 
            Console.Write("Input year -> ");
            year = Convert.ToInt32(Console.ReadLine());
 
            raschet = (year % 12) + 1;
 
            switch (raschet)
            {
                case 0: Console.ForegroundColor = ConsoleColor.Green; break;
                case 1: Console.ForegroundColor = ConsoleColor.Red; break;
                case 2: Console.ForegroundColor = ConsoleColor.Yellow; break;
                case 3: Console.ForegroundColor = ConsoleColor.White; break;
                case 4: Console.ForegroundColor = ConsoleColor.Cyan; break;
                case 5: Console.ForegroundColor = ConsoleColor.Green; break;
                case 6: Console.ForegroundColor = ConsoleColor.Red; break;
                case 7: Console.ForegroundColor = ConsoleColor.Yellow; break;
                case 8: Console.ForegroundColor = ConsoleColor.White; break;
                case 9: Console.ForegroundColor = ConsoleColor.Cyan; break;
                case 10: Console.ForegroundColor = ConsoleColor.Green; break;
                case 11: Console.ForegroundColor = ConsoleColor.Red; break;
                default: Console.ForegroundColor = ConsoleColor.Gray; break;
            }
 
            Console.WriteLine("Остаток от деления --> " + raschet);
 
            // Обратно меняем цвет на серый
            Console.ForegroundColor = ConsoleColor.Gray;
 
            raschet = 0;
            raschet = (year % 12) - 4;
            year_name = "Ошибочка вышла [2].";
 
            switch (raschet)
            {
                case 0: year_name = "Год крысы"; break;
                case 1: year_name = "Год быка"; break;
                case 2: year_name = "Год тигра"; break;
                case 3: year_name = "Год кролика"; break;
                case 4: year_name = "Год дракона"; break;
                case 5: year_name = "Год змеи"; break;
                case 6: year_name = "Год лошади"; break;
                case 7: year_name = "Год козы"; break;
                case 8: year_name = "Год обезьяны"; break;
                case 9: year_name = "Год петуха"; break;
                case 10: year_name = "Год собаки"; break;
                case 11: year_name = "Год кабана"; break;
                default: Console.WriteLine("Ошибочка вышла."); break;
            }
 
            Console.WriteLine("Название года -- > " + year_name);
 
        }
    }
}
В чем вопрос, можно ли оптимизировать данный код и исправить его на "нормальный", потому что этот работает на костылях Там я отнимаю:

(year % 12) - 4;

Тут я прибавляю:

(year % 12) + 1;

Но это же не правильно, но все же... как-то с натяжкой работает. Прошу Вас, кто читает это помочь мне в реализации моей просьбы

Решение задачи: «По номеру года вывести его название»

textual
Листинг программы
using System;
 
 
namespace YearColor
{
    class Program
    {
        private static readonly string[] _yearNames = new[]
              { "обезьяны", "петуха", "собаки", "кабана", "крысы", "быка", 
                "тигра", "кролика", "дракона", "змеи", "лошади", "козы"     };
        private static void Main()
        {
            Console.Write("Input year -> ");
            int year = Convert.ToInt32(Console.ReadLine());
            int raschet;
            Console.ForegroundColor = GetYearColor(year, out raschet);
            Console.WriteLine("Остаток от деления --> " + raschet);
            // Обратно меняем цвет на серый
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.WriteLine("Название года -- > " + GetYearName(raschet));
            Console.ReadKey();
        }
 
 
        private static string GetYearName(int year)
        {
            if (year < 1 || year > 12) throw new ArgumentOutOfRangeException(year.ToString());
            return "Год " + _yearNames[year - 1];
        }
 
 
        private static ConsoleColor GetYearColor(int year, out int yearNumber)
        {
            yearNumber = year % 12 + 1;
            switch (yearNumber % 5)
            {
                case 0: return ConsoleColor.Green;
                case 1: return ConsoleColor.Red;
                case 2: return ConsoleColor.Yellow;
                case 3: return ConsoleColor.White;
            }
            return ConsoleColor.Cyan; 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы