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.

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz