Информатика, вопрос задал Аноним , 9 лет назад

Помогите пожалуйста.Паскаль авс
используя дату текущего дня, вычислить следующую дату. Сначала с помощью инструкции case проверить ,является ли текущий день последним днём месяца.Затем проверить, является ли текущий месяц днём декабрем:если нет, то номер месяца увеличить на 1,если да то номер года,а номер месяца оставить равен 1 (учесть возможность ввода високосного года(если год/4=0,то год високосный))

Ответы на вопрос

Ответил Аноним
0
var
  s,sd,sm,sy:string;
  d,m,y,err:integer;
begin
  Write('Введите текущую дату в формате дд/мм/гггг или дд.мм.гггг: ');
  Readln(s);
  if Length(s)<>10 then Writeln('Неверный ввод')
  else begin
    sd:=s[1]+s[2]; Val(sd,d,err);
    sm:=s[4]+s[5]; Val(sm,m,err);
    sy:=Copy(s,7,4); Val(sy,y,err);
    if err>0 then Writeln('Неверный ввод')
    else begin
      if d<28 then d:=d+1
      else begin
        case m of
        1,3,5,7,8,10,12:
          if d<31 then d:=d+1
          else begin d:=1; m:=m+1 end;
        2:
          if (y mod 4)=0 then
            if d=28 then d:=29
            else begin d:=1; m:=3 end
          else begin d:=1; m:=3 end;
        else
          if d<30 then d:=d+1
          else begin d:=1; m:=m+1 end
        end
      end;
      if m>12 then begin m:=1; y:=y+1 end;
      Str(d,sd); if Length(sd)=1 then sd:='0'+sd;
      Str(m,sm); if Length(sm)=1 then sm:='0'+sm;
      Str(y,sy);
      s:=sd+'.'+sm+'.'+sy;
      Writeln('Завтра будет '+s)
    end
  end
end.


Новые вопросы