Иллюстрированный самоучитель по Tirbo Pascal


Биоритмы - часть 4


begin {InpDate} 

repeat

Write (text); 

ReadLn (d,m,y) ;

correctly := (y >= YMIN) and (Y <= YMAX) and (m >= 1)

and (m <= 12) and (d > 0) ; if correctly then

if (m = 2) and (d = 29) and (y mod 4=0) then

{Ничего не делать: это 29 февраля високосного года!}  

else

correctly := d <= Size_of_Month[m] ; 

if not correctly then

WriteLn (' Ошибка в дате!') 

until correctly 

end; {InpDate}

{--------------------------}

begin {InputDates} 

repeat

InpDate (' .Введите дату рождения в формате ДД ММ ГГГГ:',d0,m0,y0) ;

InpDate (' Введите текущую дату: ',d,m,y); 

{Проверяем непротиворечивость дат:}

correctly := у > у0; if not correctly and (y = y0) then 

begin

correctly := m > m0;

if not correctly and (m = m0) then

correctly := d >= d0 

end

until correctly 

end; {InputDates}

В самом общем виде алгоритм подсчета количества дней, разделяющих две даты, описан выше. При его реализации следует учесть три возможных варианта:

  • месячный младенец (год и месяц обеих дат одинаков): количество дней находится простым вычитанием двух чисел;
  • годовалый младенец (год обеих дат совпадает): количество дней = (остаток дней в месяце рождения) + (количество дней в текущем месяце) + (количество дней в месяцах, разделяющих обе даты);
  • общий вариант (отличаются года): количество дней = (количество дней от даты рождения до конца года) + (количество дней в разделяющих даты годах) + (количество дней от начала текущего года до текущей даты).

С учетом этого составим начальный вариант программной реализации процедуры

GET_NUMBERS_OF_DAYS :

Procedure Get_numbers_of_days (d,m,y,d,m,y: Integer;

var days: Integer);

{Определение полного количества дней, прошедших от одной даты до другой }

{--------------------------}

Procedure Variant2;

{Подсчет количества дней в месяцах,разделяющих обе даты}  

begin {Variant2} 

end; {Variant2}

{--------------------------}

Procedure Variant3 ;

{Подсчет количества дней в месяцах и годах, разделяющих обе




Начало  Назад  Вперед



Книжный магазин