Param61. Используя тип TDate и функцию DaysInMonth (см. задания Param59 и Param60), описать функцию CheckDate($$D$$) целого типа с параметром типа TDate, которая проверяет правильность даты, указанной в параметре $$D$$. Если дата $$D$$ является правильной, то функция возвращает $$0$$; если в дате указан неверный номер месяца, то функция возвращает $$1$$; если в дате указан неверный день для данного месяца, то возвращается $$2$$. Вывести значение функции CheckDate для пяти данных дат.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
program Param61; type TDate = record Day:integer; Month:integer; Year:integer; end; var D:TDate; i:integer; Function LeaP_Year(D:TDate):boolean; begin if (D.Year mod 100)=0 then if (D.Year mod 400)=0 then LeaP_Year:=True else LeaP_Year:=False else if (D.Year mod 4)=0 then LeaP_Year:=True else LeaP_Year:=False; end; Function DaysInMonth(D:TDate):integer; begin Case D.Month of 1,3,5,7,8,10,12 : DaysInMonth:=31; 4,6,9,11 : DaysInMonth:=30; 2 : if LeaP_Year(D) then DaysInMonth:=29 else DaysInMonth:=28; end; end; Function CheckDate(D:TDate):integer; begin if D.Month>12 then CheckDate:=1 else if D.Day>DaysInMonth(D) then CheckDate:=2 else CheckDate:=0; end; begin for i:=1 to 5 do begin Write('Date: '); Readln(D.Day,D.Month,D.Year); Writeln(CheckDate(D)); end; end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: