Помогите пожалуйста.Паскаль авс используя дату текущего дня, вычислить следующую дату....

0 голосов
23 просмотров

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


Информатика | 23 просмотров
0

Во-первых, для таких задач надо сразу оговорить диапазон вводимых дат. 2000-й год был високосным, а 1900-й - нет, поэтому не каждый год, номер которого делится на 4, является високосным.

0

С 1582г. год считается високосным, если он: а) или кратен 4, но при этом не кратен 100 б) или кратен 400.

0

До этого времени были иные правила.

0

А еще - нужна версия Паскаля, ибо надо задавать названия месяцев...

0

abc паскаль написал же

0

Прошу прощения, не заметил.... условие длинное. А задача не такая короткая, поэтому "скоро сдавать" - это вряд ли...

Дан 1 ответ
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<br>      else begin
        case m of
        1,3,5,7,8,10,12:
          if d<31 then d:=d+1<br>          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<br>          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.


(142k баллов)
0

Давать такое за урок написать и отладить школьнику - глупость...