Работа с датами - расписание сериала - C#

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

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

Новый телевизионный сериал начинается с первого понедельника февраля 2016 года. Сериал идет четыре раза в неделю по понедельникам, вторникам, средам и четвергам, исключая следующие праздники 23 февраля, 8 марта, 1 мая и 9 мая. Выведите дни, в которых можно посмотреть сериал и определите количество серий, которые надо показать до 1 июня 2016 года.

Решение задачи: «Работа с датами - расписание сериала»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime[] holidays = new DateTime[]{ new DateTime(2016, 02, 23), new DateTime(2016, 03, 08),
                                                  new DateTime(2016, 05, 01), new DateTime(2016, 05, 09)};
            
            DateTime firstdate = new DateTime(2016, 02, 01);
            while (firstdate.DayOfWeek != DayOfWeek.Monday) firstdate = firstdate.AddDays(1); 
            
            DateTime lastdate = new DateTime(2016, 06, 01);
            
            List<DateTime> showDates = new List<DateTime>();
 
            while (lastdate != firstdate.AddDays(-1)) { //включительно
 
                if ((firstdate.DayOfWeek == DayOfWeek.Monday || firstdate.DayOfWeek == DayOfWeek.Tuesday ||
                     firstdate.DayOfWeek == DayOfWeek.Wednesday || firstdate.DayOfWeek == DayOfWeek.Thursday) && 
                     !holidays.Contains(firstdate, new HolidayComparer())) showDates.Add(firstdate);
 
                firstdate = firstdate.AddDays(1);
                  
            }
 
            Console.WriteLine("Кол-во серий: " + showDates.Count + Environment.NewLine +
                               string.Join(Environment.NewLine, showDates.Select(x => x.ToShortDateString())));
 
            Console.ReadKey();
 
        }
 
        class HolidayComparer : IEqualityComparer<DateTime>
        {
            public bool Equals(DateTime x, DateTime y)
            {
                return x.Month == y.Month && x.Day == y.Day;
            }            
 
            public int GetHashCode(DateTime obj)
            {
                return obj.GetHashCode();
            }
        }
       
 
    }
}

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


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

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

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