По введенной дате определить дату следующего дня - C#
Формулировка задачи:
. По введенной дате определить дату следующего дня.
Указание. Известно, что дата состоит из дня, месяца и года. Например, для даты 19.10.86 следующим днем будет 20.10.86. Необходимо учесть число дней в месяце для перехода от одного месяца к следующему.
Например:
Текущий день Следующий день
31.12.1985 01.01.1986
29.04.1986 30.04.1986
30.04.1986 01.05.1986
28.02.1988 29.02.1988
28.02.1987 01.03.1987
в C#
Решение задачи: «По введенной дате определить дату следующего дня»
textual
Листинг программы
using System;
namespace ConsoleApplication21 {
class Program {
static void Main(string[] args) {
Console.Write("Укажите три целых числа: Y(год), M (месяц) и D (день), определяющие правильную дату.\n\tY (год) - ");
try {
int y = int.Parse(Console.ReadLine());
if(y<0) throw new ArgumentException("Год не может быть отрицательным");
Console.Write("\tM (месяц 1-12) - ");
int m = int.Parse(Console.ReadLine());
if (m < 1 || m > 12) throw new ArgumentException("Номер месяца должен быть в диаппазоне 1-12");
//Масив количества дней в месяце
int[] mD = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//Уточнение, если год високосный
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
mD[1] = 29;
Console.Write("\tD (день 1-{0}) - ",mD[m-1]);
int d = int.Parse(Console.ReadLine());
if (d < 1 || d > mD[m - 1]) throw new ArgumentException("В месяце №" + m + " " + y + " года, число может быть только в диаппазоне 1-" + mD[m - 1]);
if (d != mD[m - 1])
d++;
else if (m != 12) {
d = 1;
m++;
} else {
d = m = 1;
y++;
}
Console.WriteLine("Следующим денем является {0:d4}-{1:d2}-{2:d2}", y, m, d);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
}