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.
гостевая; E-mail |