Классы. Проверить даты на правильный ввод - C#
Формулировка задачи:
Нужно, чтобы программа делала проверку на правильность вводимого дня в месяце( например, в феврале -29 дней, в апреле - 30 и т.д) не могу сделать
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class DATA
{
protected
int day, mec, god; // дата, месяц, год
public
//конструктор по-умолчанию
DATA() { day = 23; mec = 02; god = 2015; }
//конструктор с параметрами
DATA(int day1, int mec1, int god1)
{ day = day1; mec = mec1; god = god1; }
//конструктор копирования
//метод для ввода
public DATA vvod()
{
int day1, mec1, god1; bool корректныйВвод;
DATA t = new DATA();
Console.WriteLine("Введите дату:\n");
do
{
Console.Write("День - ");
корректныйВвод = int.TryParse(Console.ReadLine(), out day1);
if (!(корректныйВвод == true && day1 > 0 && day1 < 32))
Console.WriteLine("Неверный ввод - вводить от 1 до 31 попробуйте ещё.");
} while (!(корректныйВвод == true && day1 > 0 && day1 < 32));
do
{
Console.Write("Месяц - ");
корректныйВвод = int.TryParse(Console.ReadLine(), out mec1);
if (!(корректныйВвод == true && mec1 > 0 && mec1 < 13))
Console.WriteLine("Неверный ввод - вводить от 1 до 12. Попробуйте ещё.");
} while (!(корректныйВвод == true && mec1 > 0 && mec1 < 13));
do
{
Console.Write("Год - ");
корректныйВвод = int.TryParse(Console.ReadLine(), out god1);
if (!(корректныйВвод == true && god1 > 0))
Console.WriteLine("Неверный ввод, попробуйте ещё.");
} while (!(корректныйВвод == true && god1 > 0));
day = day1; mec = mec1; god = god1;
return t;
}
//метод для вывода
public void vivod()
{ Console.WriteLine("\nДата: {0}.{1}.{2}", day, mec, god); }
//методы изменения
public int d(int day2)
{
day = day2;
return day;
}
public int m(int mec2)
{
mec = mec2;
return mec;
}
public int g(int god2)
{
god = god2;
return god;
}
}
//тело основной программы
class Program
{
static void Main(string[] args)
{
DATA x = new DATA();
x.vvod();
x.vivod();
Console.WriteLine("\n");
for (; ; )
{
Console.Write("\nЖелаете ли что-нибудь изменить: \n 1 - день \n 2 - месяц \n 3 - год \n \nВведите цифру - ");
string c = Console.ReadLine();
int num = Convert.ToInt32(c);//пункт изменения
switch (num)
{
//день
case 1:
{
int day2; bool корректныйВвод;
do
{
Console.Write("Введите день - ");
корректныйВвод = int.TryParse(Console.ReadLine(), out day2);
if (!(корректныйВвод == true && day2 > 0 && day2 <32))
Console.WriteLine("Неверный ввод, попробуйте ещё.");
} while (!(корректныйВвод == true && day2 > 0 && day2 < 32));
x.d(day2);
Console.Write("\nС изменённым днем");
x.vivod();
break;
}
//месяц
case 2:
{
int mec2; bool корректныйВвод;
do
{
Console.Write("Введите месяц - ");
корректныйВвод = int.TryParse(Console.ReadLine(), out mec2);
if (!(корректныйВвод == true && mec2 > 0 && mec2 < 13 ))
Console.WriteLine("Неверный ввод, попробуйте ещё.");
} while (!(корректныйВвод == true && mec2 > 0 && mec2 < 13));
x.m(mec2);
Console.Write("\nС изменённым месяцом");
x.vivod();
break;
}
//год
case 3:
{
int god2; bool корректныйВвод;
do
{
Console.Write("Введите год - ");
корректныйВвод = int.TryParse(Console.ReadLine(), out god2);
if (!(корректныйВвод == true && god2 > 0))
Console.WriteLine("Неверный ввод, попробуйте ещё.");
} while (!(корректныйВвод == true && god2 > 0));
x.g(god2);
Console.Write("\nС изменённым годом");
x.vivod();
break;
}
default:
Console.WriteLine("Дата введена верно");
break;
}
}
Console.ReadKey();
}
}
}Решение задачи: «Классы. Проверить даты на правильный ввод»
textual
Листинг программы
DateTime dt;
if (DateTime.TryParse("31.02.2015", out dt)) Console.WriteLine("Корректная дата");
else Console.WriteLine("Не корректная");