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

Определение биоритмов

{---------------}
Procedure Variant3;
{Подсчет количества дней в месяцах и годах, разделяющих обе даты}
var
mm, yy: Integer;
begin {variant3}
mm: = m0 + 1;
while mm <= 12 do {Учитываем остаток года рождения:}
begin
days: = days+Size_of_Month[mm];
if (mm = 2) and (yO mod 4=0) then
inc (days);
inc (mm)
end;
yy: = y0 + 1;
while yy < у do {Прибавляем разницу лет:}
begin
days: = days + 365;
if yy mod 4=0 then
inc (days);
inc (yy)
end;
mm: = 1;
while mm < m do {Прибавляем начало текущего года:}
begin
days: = days + Size_of_Month[mm];
if (y mod 4=0) and (mm = 2) then
inc (days);
inc (mm)
end
end; {Variant3}
{--------------------}
begin {Get_numbers_of_days}
if (y = y0) and (m = m0) then {Даты отличаются только днями:}
days: = d – d0
else {Даты отличаются не только днями: }
begin
days: = d + Size_of_Month[m0] -d0;
{Учитываем количество дней в текущем месяце и количество дней до конца месяца рождения}
if (y0 mod 4=0) and (m0 = 2) then
inc (days); {Учитываем високосный год}
if у = y0 then
Variant2 {Разница в месяцах одного и того же года}
else
Variant3 {Даты отличаются годами}
end
end; {Get_numbers_of_days}
{-------------------}
Procedure FindMaxMin(var dmin, dmax: Integer; days: Integer);
{Поиск критических дней}
const
TF = 2*3.1416/23.6884; {Период физической активности}
ТЕ = 2*3.1416/28.4261; {Период эмоциональной активности}
TI = 2*3.1416/33.1638; {Период интеллектуальной активности}
INTERVAL = 30; {Интервал прогноза}
var
min, {Накапливает минимум биоритмов}
max, {Накапливает максимум биоритмов}
x: Real; {Текущее значение биоритмов}
i: Integer;
begin {FindMaxMin}
max: = sin(days*TF)+sin(days*TE)+sin(days*TI);
min: = max; {Начальное значение минимума и максимума равно значению биоритмов для текущего дня}
dmin: = days;
dmax: = days;
for i: = 0 to INTERVAL do
begin
x: = sin((days+i)*TF) + sin((days+i)*TE) +
sin((days+i)*TI);
if x > max then
begin
max: = x;
dmax: = days + i
end
else
if x < min then
begin
min: = x;
dmin: = days + i
end
end;
end; {FindMaxMin}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.