Другие языки программирования и технологии

9. Даны натуральные числа A, B и C, обозначающие число, месяц и год. Проверить корректность этой даты. Выбрать оптимальн

для СИ:

int verification(int day, int month, int year)
{
int temp=1;
if (day>31)
temp=0;
if (month>12)
temp=0;
if (day<1)
temp=0;
if (month<1)
temp=0;
if ((month==4)&&(day==31))
temp=0;
if ((month==6)&&(day==31))
temp=0;
if ((month==9)&&(day==31))
temp=0;
if ((month==11)&&(day==31))
temp=0;
if ((day>28)&&(month==2))
temp=0;
if ((day==29)&&(month==2)&&(year%4==0))
temp=1;
if ((day==29)&&(month==2)&&(year%4!=0))
temp=0;
return temp;
}
/*если возвращается 0, то дата не существует. если 1 – то существует*/
Родион Кузнецов
Родион Кузнецов
8 910
Лучший ответ
Для дельфи:

try
EncodeDate(a,b,c); //посмотри порядок точно
except
ShowMessage('Wrong!');
Abort;
end;
ShowMessage('Right!');

Только боюсь, что за такое по головке не погладят.
А еще могу обрадовать - календарь-то менялся несколько раз по пути, так что там проблемки ой-ой-ой!
BOOL ValidateDate(int D, int M, int Y)
{
if (D < 1 || D > 31 || M < 1 || M > 12)
return FALSE; // в принципе неправильно

if (M == 1 || M == 3 || M == 5 || M == 7 || M == 8 || M == 10 || M == 12)
return TRUE; // месяцы по 31 день

if (M != 2)
return (D < 31); // месяцы по 30 дней

if (D < 29)
return TRUE; // февраль до 28 дней есть в любом годе

// Определяем високосный год
BOOL v = (Y % 4 == 0) && !(Y % 100 == 0 && Y % 400 != 0);
return (v && D == 29); // 29 февраля в високосном годе
}
AS
Alex Sam
21 360
tckb yflj? gbib vyt yf vskj? z nt,t dct xjnrj b c rjvtynfbv cltkf.

Похожие вопросы