Mauzzz0

Untitled

Nov 11th, 2019
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.31 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using Works9and10;
  6. using static System.Console;
  7.  
  8. namespace Works9and10
  9. {
  10.     class dateTime // Каждое свойство имеет get{}, но, в принципе, оно не используется, но без него наследование, как я понял, невозможно, поэтому пришлось оставить.
  11.     {
  12.         static string[] monthsList =
  13.         {
  14.             "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь",
  15.             "декабрь"
  16.         };
  17.  
  18.         private static int day;
  19.         private static string month;
  20.         private static int year;
  21.         private static int hour;
  22.         private static int minute;
  23.         private static int monthCode;
  24.  
  25.         public static int Day
  26.         {
  27.             get { return day;}
  28.             set // День не может быть больше 31
  29.             {
  30.                 if (value > 31)
  31.                 {
  32.                     WriteLine("Incorrect date (by day)(day can't be more than 31");
  33.                     System.Environment.Exit(1);
  34.                 }
  35.                 else
  36.                 {
  37.                     day = value;
  38.                 }
  39.             }
  40.         }
  41.  
  42.         public static string Month
  43.         {
  44.             get { return month;}
  45.             set
  46.             {
  47.                 if (monthsList.Any(str => str == Convert.ToString(value).ToLower())) // Проверка есть ли введённый месяц в списке месяцев
  48.                 {
  49.                     int indx = Array.IndexOf(monthsList, Convert.ToString(value));
  50.                     monthCode = indx + 1; // На будущее для вывода краткой даты
  51.                     int[] monthsRange = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // Проверка позволяет ли введённый месяц сохранить число. ( НЕ МОЖЕТ БЫТЬ 31 НОЯБРЯ, 31 АПРЕЛЯ и т.д.)
  52.                     if (day <= monthsRange[indx]) // если совместить monthsList и monthsRange, то можно увидеть, что месяц с индексом i (monthsList[i]) имеет максимум (monthsRange[i]) дней.
  53.                     {
  54.                         month = value;
  55.                     }
  56.                     else
  57.                     {
  58.                         WriteLine("Incorrect date (by month)(the day number is too large for this month)");
  59.                         System.Environment.Exit(1);
  60.                     }
  61.                 }
  62.                 else
  63.                 {
  64.                     WriteLine("Incorrect month (not found in months list)");
  65.                     System.Environment.Exit(1);
  66.                 }
  67.             }
  68.         }
  69.  
  70.         public static int Year
  71.         {
  72.             get { return year; }
  73.             set
  74.             {
  75.                 if (value > 0) // Год должен быть положительным
  76.                 {
  77.                     if (day == 29 & month == "февраль") // Если у нас день и месяц - это 29 февраля, то необходимо проверить, чтобы год был обязательно високосным
  78.                     {
  79.                         if ((value % 4 == 0 & value % 100 != 0) | (value % 400 == 0))
  80.                         {
  81.                             year = value;
  82.                         }
  83.                         else
  84.                         {
  85.                             WriteLine("Incorrect date (by year)(29 feb may be only in leap year)");
  86.                             System.Environment.Exit(1);
  87.                         }
  88.                     }
  89.                     else
  90.                     {
  91.                         year = value;
  92.                     }
  93.                 }
  94.                 else
  95.                 {
  96.                     WriteLine("Incorrect date (by year)(Value should be positive)");
  97.                     System.Environment.Exit(1);
  98.                 }
  99.             }
  100.         }
  101.  
  102.         public static int Hour
  103.         {
  104.             get { return hour; }
  105.             set // Проверка, чтобы значение часов было в пределах 0-23
  106.             {
  107.                 if (0 <= value & value < 24)
  108.                 {
  109.                     hour = value;
  110.                 }
  111.                 else
  112.                 {
  113.                     WriteLine("Incorrect date (by hour)(Value should be between 0 and 24)");
  114.                     System.Environment.Exit(1);
  115.                 }
  116.             }
  117.         }
  118.  
  119.         public static int Minute
  120.         {
  121.             get { return minute;}
  122.             set // Проверка, чтобы значение минут было в рамках 0-59
  123.             {
  124.                 if (0 <= value & value < 60)
  125.                 {
  126.                     minute = value;
  127.                 }
  128.                 else
  129.                 {
  130.                     WriteLine("Incorrect date (by minute)(Value should be between 0 and 59)");
  131.                     System.Environment.Exit(1);
  132.                 }
  133.             }
  134.         }
  135.  
  136.         public static void GetInfo() // Обращение именно к переменным хз зачем сделал, правильнее было бы к свойствам всё же
  137.         {
  138.             WriteLine("Заданная дата:"+"\n"+"{0} {1} {2}\t{3}:{4}",day,month,year,hour,minute);
  139.         }                                                                                    
  140.                                                                                            
  141.         public static int MonthCode // read-only переменная для вывода месяца в кратком виде
  142.         {
  143.             get { return monthCode; }
  144.         }
  145.     }
  146.  
  147.    
  148.  
  149.     class shortDateTime :  dateTime // Задание 2, наследование класса dateTime и пересоздание GetInfo() на вывод краткой даты
  150.     {
  151.         new public static void GetInfo() // new чтобы IDE не подчеркивал, что идёт перекрытие GetInfo() из dateTime
  152.         {
  153.             WriteLine("Краткая заданная дата:\n"+"{0}.{1}.{2}\t{3}:{4}",Day,MonthCode,Year,Hour,Minute);
  154.         }
  155.     }
  156.     class Program
  157.     {
  158.         static void Main(string[] args)
  159.         {
  160.             WriteLine("Write number of day");
  161.             dateTime.Day = Convert.ToInt32(ReadLine());
  162.            
  163.             WriteLine("Write name of months(На русском в именительном падеже)");
  164.             dateTime.Month = ReadLine();
  165.            
  166.             WriteLine("Write year");
  167.             dateTime.Year = Convert.ToInt32(ReadLine());
  168.            
  169.             WriteLine("Write hour");
  170.             dateTime.Hour = Convert.ToInt32(ReadLine());
  171.            
  172.             WriteLine("Write minute");
  173.             dateTime.Minute = Convert.ToInt32(ReadLine());
  174.            
  175.             WriteLine(new String('-',20));
  176.            
  177.             dateTime.GetInfo();
  178.             shortDateTime.GetInfo();
  179.         }
  180.     }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment