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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             DateTime[] holidays = new DateTime[]{ new DateTime(2016, 02, 23), new DateTime(2016, 03, 08),
  13.                                                   new DateTime(2016, 05, 01), new DateTime(2016, 05, 09)};
  14.            
  15.             DateTime firstdate = new DateTime(2016, 02, 01);
  16.             while (firstdate.DayOfWeek != DayOfWeek.Monday) firstdate = firstdate.AddDays(1);
  17.            
  18.             DateTime lastdate = new DateTime(2016, 06, 01);
  19.            
  20.             List<DateTime> showDates = new List<DateTime>();
  21.  
  22.             while (lastdate != firstdate.AddDays(-1)) { //включительно
  23.  
  24.                 if ((firstdate.DayOfWeek == DayOfWeek.Monday || firstdate.DayOfWeek == DayOfWeek.Tuesday ||
  25.                      firstdate.DayOfWeek == DayOfWeek.Wednesday || firstdate.DayOfWeek == DayOfWeek.Thursday) &&
  26.                      !holidays.Contains(firstdate, new HolidayComparer())) showDates.Add(firstdate);
  27.  
  28.                 firstdate = firstdate.AddDays(1);
  29.                  
  30.             }
  31.  
  32.             Console.WriteLine("Кол-во серий: " + showDates.Count + Environment.NewLine +
  33.                                string.Join(Environment.NewLine, showDates.Select(x => x.ToShortDateString())));
  34.  
  35.             Console.ReadKey();
  36.  
  37.         }
  38.  
  39.         class HolidayComparer : IEqualityComparer<DateTime>
  40.         {
  41.             public bool Equals(DateTime x, DateTime y)
  42.             {
  43.                 return x.Month == y.Month && x.Day == y.Day;
  44.             }            
  45.  
  46.             public int GetHashCode(DateTime obj)
  47.             {
  48.                 return obj.GetHashCode();
  49.             }
  50.         }
  51.        
  52.  
  53.     }
  54. }

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


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

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

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы