Поиск по этому блогу

вторник, 21 февраля 2017 г.

Next day

Задача "Следующий день"

С клавиатуры вводиться текущая дата, написать программу которая выдает дату следующего дня.

Главная сложность работы с датами это их неравномерность (число дней в месяце, високосный  или нет год). В этом решении будет предложено один из путей преодоления этих проблем. Буду рад, если данный материал будет полезен коллегам при подготовки учащихся к олимпиадам.

Решение

program nextday;
var
   r,d,m,g:integer;
   last:boolean;
begin
    writeln(‘Задайте цифрами сегодняшнюю дату’);
    write(‘(число месяц год)-> ’);
    readln(d,m,g);
    last:=false;
{Разбираемся с месяцами}
    case m of
            1,3,5,7,8,10,12: if d=31 then last:=true;
                       4,6,9,11: if d=30 then last:=true;
                                  2: if d=28 then
                                           begin
                                               r:= g mod 4; {Определяем високосный ли год}
                                               if r <> 0 then last:=true;
                                            end;
            end;
      if last then
            begin
                writeln(‘Последний день месяца.’);
                d:=1;
                if m=12 then
                     begin
                          m:=1;
                          g:=g+1;
                          writeln(‘С наступающим Новым годом!.’);
                      end;
                else
                      m:=m+1;
             end;
       else
          d:=d+1;
   writeln(‘Завтра ’,d,’.’,m,’.’,g);
end.

Если обнаружите ошибку, опишите ее в комментарии под записью. Буду признателен за уточнение и с радостью ее исправлю.

Комментариев нет:

Отправить комментарий