Pers.narod.ru. Алгоритмы. Дата следующего дня по введенной дате |
Программа определяет и выводит дату следующего дня по введенным с клавиатуры дню, месяцу и году. Делает проверки корректности данных, не использует подпрограмм и циклов :)
program NextDay;
var day,mon,year,lastday:integer;
last,leap:boolean;
begin
writeln;
writeln ('Введите день месяц и год, разделенные пробелами:');
{$I-}
read (day,mon,year);
{$I+}
if IoResult <> 0 then begin
writeln ('Вы не ввели 3 числа, это что-то другое!');
reset(input); readln;
exit;
end;
if year<1 then begin
writeln ('Год не должен быть меньше 1!');
reset(input); readln;
exit;
end;
if (mon<1) or (mon>12) then begin
writeln ('Месяц должен принимать значения от 1 до 12!');
reset(input); readln;
exit;
end;
if day<1 then begin
writeln ('День не должен быть меньше 1!');
reset(input); readln;
exit;
end;
last:=false;
case mon of
1,3,5,7,8,10,12: begin
lastday:=31;
if day=lastday then last:=true;
end;
4,6,9,11: begin
lastday:=30;
if day=lastday then last:=true;
end;
2: begin
leap:=false;
lastday:=28;
if (year mod 4 =0) and (year mod 100 <>0) or
(year mod 400 =0) then begin
leap:=true;
lastday:=29;
end;
if (leap=true) and (day=29) or
(day=28) then last:=true;
end;
end;
if day>lastday then begin
writeln ('День ',day,' не существует для ',mon,' месяца ',year,' г.');
reset(input); readln;
exit;
end;
if last=true then begin
day:=1;
mon:=mon+1;
if mon>12 then begin
mon:=1;
year:=year+1;
end;
end
else day:=day+1;
writeln ('Дата следующего дня:');
write (day:2,'/',mon:2,'/',year);
reset(input); readln;
end.
|
|