Цитата:
Сообщение от Sergei47
Даны числа A,B,C(число, месяц, год). Проверить корректность даты.
|
Как-то так:
VAR
A, B, C:INTEGER;
A_corr, B_corr, C_corr, Date_corr, vis:BOOLEAN;
BEGIN
Write('Enter day '); ReadLn(A);
Write('Enter month '); ReadLn(B);
Write('Enter year '); ReadLn(C);
IF C>0 THEN C_corr:=TRUE ELSE C_corr:=FALSE;
IF (C_corr) AND (C mod 4 = 0) AND (C mod 400 <> 0) THEN vis:=TRUE ELSE vis:=FALSE;
IF A<0 THEN A_corr:=FALSE ELSE A_corr:=TRUE;
IF B<0 THEN B_corr:=FALSE ELSE B_corr:=TRUE;
CASE B OF
1,3,5,7,8,10,12: IF A>31 THEN A_corr:=FALSE;
4,6,9,11: IF A>30 THEN A_corr:=FALSE;
2: IF ((vis) AND (A>29)) OR ((vis=FALSE) AND (A>28)) THEN A_corr:=FALSE;
ELSE B_corr:=FALSE;
END;
IF (A_corr) AND (B_corr) AND (C_corr) THEN
WriteLn('The date is CORRECT') ELSE
WriteLn('The date is NOT CORRECT');
ReadLn;
END.