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


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


Procedure WriteDates (dmin,dmax,days : Integer);

{Определение и вывод дат критических дней. Вывод дополнительной информации о количестве прожитых дней, часов, минут и секунд }

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

Procedure WriteDate (text : String; dd : Integer);

{Определение даты для дня DD от момента рождения. В глобальных переменных d, m и у имеется текущая дата, в переменной DAYS -количество дней, прошедших от момента рождения до текущей даты.Выводится сообщение TEXT и найденная дата в формате

ДД-МЕС-ГГГГ} 

begin {WriteDate}

end; {WriteDate}

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

var

LongDays: Longlnt; {"Длинная" целая переменная для часов,минут и секунд } 

begin {Wri teDates} 

LongDays : = days ;

WriteLn( 'Прошло: ', LongDays,' дней, ' , longDays*24, ' часов, ', LongDays*24*60, ' минут, ', LongDays*24*60*60, ' секунд'); 

WriteDate ( 'Наименее благоприятный день: ', drain); 

WriteDate ( 'Наиболее благоприятный день: ',dmax) 

end; {WriteDates}

Реализация процедуры WRITEDATE не вызывает особых сложностей:

Procedure WriteDate (text: String; dd: Integer); 

const

Names_of_Monthes : array [1..12] of String [3] =('янв','фев','мар','апр','мая', 'июн','июл','авг','сен','окт', 'ноя','дек'); 

var

d0,m0,y0,ddd : Integer;

 begin {WriteDate} 

d0 := d; 

m0 := m; 

y0 : = y; 

ddd := days; 

while ddd<>dd do begin

inc(d0); {Наращиваем число} 

if (y0 mod 4 <> 0) and (d0 > Size_of_Month[m0]) or (y0 mod ,4=0) and (d0=30) then 

begin {Корректируем месяц}

d0 := 1; 

inc(m0);

if m0 = 13 then {Корректируем год} 

begin

m0 := 1; 

inc(y0) 

end 

end;

inc(ddd) 

end;

WriteLn(text,d0,'-',Names_of_Monthes[m0] ,'-',y0) 

end; {WriteDate}

Собрав воедино отдельные части, получим полный текст программы (прил.5.2), предназначенной для определения биоритмов.

 




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



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