Если дней больше 30 (31) и и февраль больше 28 (29), необходимо генерировать исключения - C#
Формулировка задачи:
Программа вычисляет порядковый день в году с учетом високосного года. Если дней больше 30 (31) и и февраль больше 28(29), необходимо генерировать исключения. Но в программе неправильно генерируются исключения, например, можно ввести 30 апреля и сгенерируется исключение, а можно и ввести 29 февраля не високосного года и исключения не будет. Помогите, пожалуйста, разобраться!)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _1Б_задание_4 { class Data { public double Year { get; set; } public double Month { get; set; } public double Day { get; set; } public void setYear(double y) { Year = y; if (y < 1600) { throw new System.ArgumentException("Parameter cannot be null", "original"); } } public void setMonth(double m) { Month = m; if (m > 12) { throw new System.ArgumentException("Parameter cannot be null", "original"); } } public void setDay(double d) { Day = d; if ((d > 30) && (Month == 4)) if ((d > 30) && (Month == 6)) if ((d > 30) && (Month == 9)) if ((d > 30) && (Month == 11)) if ((d > 31) && (Month == 1)) if ((d > 31) && (Month == 3)) if ((d > 31) && (Month == 5)) if ((d > 31) && (Month == 7)) if ((d > 31) && (Month == 8)) if ((d > 31) && (Month == 10)) if ((d > 31) && (Month == 12)) { throw new System.ArgumentException("Parameter cannot be null", "original"); } if ((((Year % 4) == 0) && (Month == 2)) || (Day > 29)) if ((((Year % 4) == 1) && (Month == 2)) || (Day > 28)) if ((((Year % 4) == 2) && (Month == 2)) || (Day > 28)) if ((((Year % 4) == 3) && (Month == 2)) || (Day > 28)) { throw new System.ArgumentException("Parameter cannot be null", "original"); } } static void Main() { int[] myArr = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int i; double t = 0; double t1; Data data1 = new Data(); Console.WriteLine("Введите год"); double y = Convert.ToDouble(Console.ReadLine()); data1.setYear(y); Data data2 = new Data(); Console.WriteLine("Введите месяц"); double m = Convert.ToDouble(Console.ReadLine()); data2.setMonth(m); Data data3 = new Data(); Console.WriteLine("Введите день"); double d = Convert.ToDouble(Console.ReadLine()); data3.setDay(d); if ((y % 4) == 0) { myArr[2] = 29; for (i = 0; i < m; i++) { t = t + myArr[i]; } t1 = t + d; Console.WriteLine(t1); } else { for (i = 0; i < m; i++) { t = t + myArr[i]; } t1 = t + d; Console.WriteLine(t1); } } } }
Решение задачи: «Если дней больше 30 (31) и и февраль больше 28 (29), необходимо генерировать исключения»
textual
Листинг программы
if ((d > 30) && (Month == 4)) if ((d > 30) && (Month == 6)) if ((d > 30) && (Month == 9)) if ((d > 30) && (Month == 11)) if ((d > 31) && (Month == 1)) if ((d > 31) && (Month == 3)) if ((d > 31) && (Month == 5)) if ((d > 31) && (Month == 7)) if ((d > 31) && (Month == 8)) if ((d > 31) && (Month == 10)) if ((d > 31) && (Month == 12)) { throw new System.ArgumentException("Parameter cannot be null", "original"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д