Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Биоритмы человека - файл 1.doc


Биоритмы человека
скачать (214 kb.)

Доступные файлы (1):

1.doc214kb.16.11.2011 01:52скачать

содержание

1.doc

Московский Государственный Авиационный Институт


(Технический Университет)

филиал «Восход»


Кафедра МиПОИС




Курсовой проект по информатике по теме


«Биоритмы человека»

(отчет)


Преподаватель ____________ /Кулепетова Н.Н./


« ___ » ноября 2001 г.



Студент группы ДМ 1-26 ___________ /Толоконников А.В./


« ___ » ноября 2001 г.


г. Байконур

2001г.

Содержание: номер страницы


  1. Постановка задачи ………………………………………………………….... 3

  2. Алгоритм решения задачи:

    • схемы отдельных модулей; ……………………………………………4

    • схема программы.

  3. Программа решения

    • программы отдельных модулей с описанием их назначения;

    • общая программа нахождения поставленной задачи.

  4. Распечатка результатов

  5. Описание работы модулей программы

  6. Вывод

  7. Используемая литература




  1. Постановка задачи


Известно, что физическое, умственное и эмоциональное состояние человека меняется циклически, начиная с самого рождения, с периодом 23, 28 и 33 дня соответственно. Написать программу определения критических дней (дней, когда значения всех биоритмов либо максимальны, либо минимальны). Показать графически, меняются значения биоритмов в течение исследуемого времени. Сосчитать сколько времени прошло с момента рождения человека. Вывести на экран зависимость графика функции биоритмов от времени, а также значения: наиболее благоприятный день, наименее благоприятный день (соответственно максимума и минимума значений биоритмов в заданный момент времени). Вывод значений производить в виде ДД-МММ-ГГГГ, а ввод значений дат: текущей и даты рождения в формате ДД-ММ-ГГГГ. В разделе программ провести детальную оценку: какую задачу выполняет данный блок программы, как он действует. Показать алгоритм программы решения данной задачи.



  1. Алгоритм решения задачи


Напишем алгоритм основной программы состоящей из модулей, а затем алгоритмы отдельных модулей программы с описанием их работы.


^ Алгоритм программы (Основная программа)


Данный алгоритм содержит в себе отдельные модули, которых будут выполнятся в процессе работы программы.




Ввод дат и их проверка





Подсчет количества дней





Поиск дат, вывод графика


Вывод критических дат






^ Модуль № 1 (Ввод и проверка правильности дат)


S = [1800 год - 2500 год] S – переменная принимающая значения из интервала от 1800 по 2500 год, которая накладывает ограничение на год в определение правильности даты. Любой год в случае верности значения месяца и дня, если он входит в интервал верен, а иначе вывод на экран сообщения о том, что «ошибка в веденной дате». Переменная задается нижней и верхней границей в разделе констант. А=CORRECTLY – переменная типа Boolean, которая производит определение правильности введенных дат. Q – размер месяца.
















да





нет

Дата правильна?





Сообщение об ошибке при вводе









Дата правильна?






нет


Сообщение об ошибке при вводе







МОДУЛЬ № 2 (Подсчет количества дней прошедших с момента рождения данного человека)


Описание данной подпрограммы начнем с описания ее составных частей, на которые в дальнейшем сделаем ссылку. F = DAYS – счетчик дней, G[I] – размер месяца




Инициализация переменных



Годы разные?

нет



да



Подсчет дней в «лишних» годах






Подсчет дней в «лишних»

месяцах



Добавление разницы в днях




МОДУЛЬ № 3 (Поиск критических дней и вывод на экран монитора графиков значений биоритмов)


Описание данного модуля начинаем с создания модуля для вывода графиков биоритмов. Обозначим: А1=TF, A2=TE, A3=TI и Z = interval – константы, обозначающие периоды биоритмов: физического, эмоционального и интеллектуального, а также интервала, на котором определяются критические дни.



Инициализация переменных и массива







I = 0



Вычисляем Х=sin(a) + sin(b)+ sin(c)




Заносим Х

в массив






нет



Х< MIN




да



MIN=Х















Х>MAX


MAX=Х

да

нет













I=I+1



да


IInterval




нет


Вывод результатов в виде графика




МОДУЛЬ № 4 (Вывод критических дат)


Данный модуль преобразует найденные даты в текстовый вариант записи для удобства их восприятия




Преобразование данных в текстовый вид





Вывод наименее благоприятного дня



Преобразование данных в текстовый вид

Вывод наиболее благоприятного дня







  1. Программа решения


PROGRAM A_301_BIORITM;

{КУРСОВАЯ РАБОТА ПО ТЕМЕ "БИОРИТМЫ ЧЕЛОВЕКА" СТУДЕНТА ГРУППЫ

ДМ 1-26 ТОЛОКОННИКОВА АНДРЕЯ}

USES CRT;

CONST

SIZE_OF_MONTH:ARRAY [1..12] OF INTEGER =(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

VAR

D0,D,M0,M,Y0,Y,DMIN,DMAX,I,DAYS:INTEGER;

FF : TEXT;

{ДАТЫ РОЖДЕНИЯ И ТЕКУЩАЯ, КРИТИЧЕСКИЕ ДНИ, КОЛИЧЕСТВО ДНЕЙ ОТ РОЖДЕНИЯ}

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

PROCEDURE INPUTDATES(VAR D0,M0,Y0,D,M,Y:INTEGER);

{ВВОДИТ ДАТУ РОЖДЕНИЯ И ТЕКУЩУЮ ДАТУ. КОНТРОЛИРУНТ ПРАВИЛЬНОСТЬ ВВЕДЕННЫХ ДАТ

И ИХ НЕПРОТИВОРЕЧИВОСТЬ (ТЕКУЩАЯ ДАТА ДОЛЖНА БЫТЬ ПОЗЖЕ ДАТЫ РОЖДЕНИЯ)}

VAR

CORRECTLY: BOOLEAN; {ПРИЗНАК ПРАВИЛЬНОСТИ ВВОДА}

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

PROCEDURE INPDATE(TEXT: STRING; VAR D,M,Y:INTEGER);

{ВЫВОДИТ ПРИГЛАШЕНИЕ TEXT, ВВОДИТ ДАТУ В ФОРМАТЕ ДД ММ ГГГГ И

ПРОВЕРЯЕТ ЕЕ ПРАВИЛЬНОСТЬ}

CONST

YMIN=1800; {МИНИМАЛЬНЫЙ ПРАВИЛЬНЫЙ ГОД}

YMAX=2500; {МАКСИМАЛЬНЫЙ ПРАВИЛЬНЫЙ ГОД}

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:=Y>Y0;

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}

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

PROCEDURE GET_NUMBERS_OF_DAYS(D0,M0,Y0,D,M,Y:INTEGER; VAR DAYS:INTEGER);

{ОПРЕДЕЛЕНИЕ ПОЛНОГО КОЛИЧЕСТВА ДНЕЙ, ПРОШЕДШИХ ОТ ОДНОЙ ДАТЫ ДО ДРУГОЙ}

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

PROCEDURE VARIANT2;

{ПОДСЧЕТ КОЛИЧЕСТВА ДНЕЙ В МЕСЯЦАХ, РАЗДЕЛЯЮЩИХ ОБЕ ДАТЫ}

VAR

MM:INTEGER;

BEGIN {VARIANT2}

MM:=M0;

WHILE MM<M DO

BEGIN

DAYS:=DAYS+SIZE_OF_MONTH[MM];

IF (MM=2) AND (Y0 MOD 4 = 0) THEN

INC(DAYS);

INC(MM)

END

END; {VARIANT2}

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

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 (Y0 MOD 4 = 0) THEN

INC(DAYS);

INC(MM)

END;

YY:=Y0+1;

WHILE YY<Y 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 Y=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; {ПЕРИОД ФИЗИЧЕСКОЙ АКТИВНОСТИ}

TE=2*3.1416/28.4261; {ПЕРИОД ЭМОЦИОНАЛЬНОЙ АКТИВНОСТИ}

TI=2*3.1416/33.1638; {ПЕРИОД ИНТЕЛЛЕКТУАЛЬНОЙ АКТИВНОСТИ}

INTERVAL=30; {ИНТЕРВАЛ ПРОГНОЗА}

VAR

MIN, {НАКАПЛИВАЕТ МИНИМУМ БИОРИТМОВ}

MAX, {НАКАПЛИВАЕТ МАКСИМУМ БИОРИТМОВ}

X:REAL; {ТЕКУЩЕЕ ЗНАЧЕНИЕ БИОРИТМОВ}

I, J, I1, I2:INTEGER;

RES : ARRAY[0..INTERVAL] OF INTEGER;

S : STRING;

K :String[2]; {К - TEMP }

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);

RES[I]:=ROUND(X*5)+9;

IF X>MAX THEN

BEGIN

MAX:=X;

DMAX:=DAYS+I

END

ELSE IF X<MIN THEN

BEGIN

MIN:=X;

DMIN:=DAYS+I

END

END;

ClrScr;

WriteLn ('ОБЩАЯ АКТИВНОСТЬ');

WRITELN(FF,'ОБЩАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1 end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WriteLN (FF,'PRESS ANY KEY, PLEASE...');

Write ('PRESS ANY KEY, PLEASE...'); ReadKey;

{ФИЗИЧЕСКАЯ АКТИВНОСТЬ}

FOR I:=0 TO INTERVAL DO

BEGIN

X:=SIN((DAYS+I)*TF);

RES[I]:=ROUND(X*5)+9;

END;

ClrScr;

WriteLn ('ФИЗИЧЕСКАЯ АКТИВНОСТЬ');

WriteLn (FF,'ФИЗИЧЕСКАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1 end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WriteLN (FF,'PRESS ANY KEY, PLEASE...');

Write ('PRESS ANY KEY, PLEASE...'); ReadKey;

{ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ}

FOR I:=0 TO INTERVAL DO

BEGIN

X:=SIN((DAYS+I)*TI);

RES[I]:=ROUND(X*5)+9;

END;

ClrScr;

WriteLn ('ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ');

WriteLn (FF,'ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1 end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WriteLN (FF,'PRESS ANY KEY, PLEASE...');

Write ('PRESS ANY KEY, PLEASE...'); ReadKey;

{ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ}

FOR I:=0 TO INTERVAL DO

BEGIN

X:=SIN((DAYS+I)*TE);

RES[I]:=ROUND(X*5)+9;

END;

ClrScr;

WriteLn ('ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ');

WriteLn (FF,'ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1; end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WRITELN;

END; {FINDMAXMIN}

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

PROCEDURE WRITEDATES(DMIN,DMAS,DAYS:INTEGER);

{ОПРЕДЕЛЕНИЕ И ВЫВОД ДАТ КРИТИЧЕСКИХ ДНЕЙ. ВЫВОД ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ О

КОЛИЧЕСТВЕ ПРОЖИТЫХ ДНЕЙ, ЧАСОВ, МИНУТ}

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

PROCEDURE WRITEDATE(TEXT:STRING; DD:INTEGER);

{ОПРЕДЕЛЕНИЕ ДАТЫ ДЛЯ ДНЯ DD ОТ МОМЕНТА РОЖДЕНИЯ. В ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ D,

M И Y ИМЕЕТСЯ ТЕКУЩАЯ ДАТА, В ПЕРЕМЕННОЙ DAYS - КОЛИЧЕСТВО ДНЕЙ, ПРОЩЕДШИХ

ОТ МОМЕНТА РОЖДЕНИЯ ДО ТЕКУЩЕЙ ДАТЫ. ВЫВОДИТСЯ СООБЩЕНИЕ TEXT И НАЙДЕННАЯ

ДАТА В ФОРМАТЕ ДД-МЕС-ГГГГ}

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);

WRITELN(FF,TEXT,D0,'-',NAMES_OF_MONTHES[M0],'-',Y0);

END; {WRITEDATE}

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

VAR

LONGDAYS:LONGINT; {"ДЛИННАЯ" ЦЕЛАЯ ПЕРЕМЕННАЯ ДЛЯ ЧАСОВ И МИНУТ}

BEGIN {WRTEDATES}

LONGDAYS:=DAYS;

WRITELN('ПРОШЛО ОТ РОЖДЕНИЯ: ',LONGDAYS,' ДНЕЙ ИЛИ, ',LONGDAYS*24,' ЧАСОВ ИЛИ, ',LONGDAYS*24*60,' МИНУТ');

WRITELN(FF,'ПРОШЛО ОТ РОЖДЕНИЯ: ',LONGDAYS,' ДНЕЙ ИЛИ, ',LONGDAYS*24,' ЧАСОВ ИЛИ, ',LONGDAYS*24*60,' МИНУТ');

WRITELN;

WRITELN(FF);

WRITEDATE('НАИМЕНЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: ',DMIN);

WRITEDATE('НАИБОЛЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: ',DMAX)

END; {WRITEDATES}

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

BEGIN {ГЛАВНАЯ ПРОГРАММА}

ASSIGN(FF,'ГРАФРИТМ.RES');

REWRITE(FF);

INPUTDATES(D0,M0,Y0,D,M,Y);

GET_NUMBERS_OF_DAYS(D0,M0,Y0,D,M,Y,DAYS);

FINDMAXMIN(DMIN,DMAX,DAYS);

WRITEDATES(DMIN,DMAX,DAYS);

CLOSE(FF);

READLN

END.
  1. ^
    Распечатка результатов


ПРИМЕР № 1

ВВЕДИТЕ ДАТУ РОЖДЕНИЯ В ФОРМАТЕ ДД ММ ГГГГ: 15 07 1984

ВВЕДИТЕ ТЕКУЩУЮ ДАТУ: 16 11 2001

ОБЩАЯ АКТИВНОСТЬ

|

|

| *

| * * * *

| * * *

| * *

| * *

| * *

|16 18 20 * 24 26 28 30 2 4 6 * 8 10 12 14 16

|------ * * -------------------------------------------------- ДЕНЬ

| 17* * 21 23 25 27 29 1 3 5 7 * 9 11 13 15

|* * *

|

| *

|

| *

|

| *

| *


PRESS ANY KEY, PLEASE...


ФИЗИЧЕСКАЯ АКТИВНОСТЬ

|

|

|

|

| * * * *

|* * *

| * * *

| * * *

|16 18* 20 22 24 26 28 30 * 4 6 8 10 12 14 16

|------ * -------------------------------------------- * ----- ДЕНЬ

| 17 19 21 23 25 27 29 * 3 5 7 9 11 13* 15

| * * *

| * * *

| * *

| * * * *

|

|

|

|


PRESS ANY KEY, PLEASE...


ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ

|

|

|

|

| * * * *

| * * * *

| * * *

| * * *

|16 * 20 22 24 26 28 30 2 * 4 6 8 10 12 14 16

|- * ------------------------------- * ----------------------- ДНЕЙ

|* 17 19 21 23 25 27 29 1 3 * 7 9 11 13 15

| *

| *

| * * * *

| * * * * *

|

|

|

|


PRESS ANY KEY, PLEASE...


ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ

|

|

|

|

| * * * *

| * * *

| * *

| * *

|16 18 20 22* 24 26 28 30 2 4 * 6 8 10 12 14 16

|----------- * ------------------------- * ------------------- ДЕНЬ

| 17 19 * 23 25 27 29 1 3 5 * 9 11 13 15

| * *

| * *

| * * * * *

|* * * * *

|

|

|

|


ПРОШЛО ОТ РОЖДЕНИЯ: 6333 ДНЕЙ ИЛИ, 151992 ЧАСОВ ИЛИ, 9119520 МИНУТ


НАИМЕНЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: 1-ДЕК-2001

НАИБОЛЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: 16-ДЕК-2001


ПРИМЕР № 2


ВВЕДИТЕ ДАТУ РОЖДЕНИЯ В ФОРМАТЕ ДД ММ ГГГГ: 18 05 1984

ВВЕДИТЕ ТЕКУЩУЮ ДАТУ: 12 07 2005


ОБЩАЯ АКТИВНОСТЬ

|

|

| * * * * *

| * *

| * *

| * *

| *

|* *

| 16 18 20 22 24 26 28* 30 2 4 6 8 10 12 14

|----------------------------- * ----------------------------- ДЕНЬ

|15 17 19 21 23 25 27 29 * * 3 5 7 9 11 13

| *

| * *

| * *

| * * * * * * * *

|

|

|

|


PRESS ANY KEY, PLEASE...


ФИЗИЧЕСКАЯ АКТИВНОСТЬ

|

|

|

|

|* * * * * *

| * * * *

| * *

| * * *

| 16 18 20 22 24 26 28 30 2 * 4 6 8 10 12* 14

|----------- * --------------------- * --------------------- * ДЕНЬ

|15 17 19 21* 23 25 27 29 31* 3 5 7 9 11 13

| *

| * *

| * * *

| * * *

|

|


|

|


PRESS ANY KEY, PLEASE...


ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ

|

|

|

|

| * * * *

| * * * *

| * * *

| * * *

|* 16 18 20 22 24 26 28 * 2 4 6 8 10 12 14

|------------------------------- * --------------------------- ДЕНЬ

|15 17 19 21 23 25 27 29 31* 3 5 7 9 11 13

| * *

| * *

| * * * *

| * * * * *

|

|

|

|


PRESS ANY KEY, PLEASE...


ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ

|

|

|

|

| * * * * *

| * *

| * *

| * *

| 16 18 * 22 24 26 28 30 * 2 4 6 8 10 12 14

|------- * ------------------------- * ----------------------- ДЕНЬ

|15 17* 19 21 23 25 27 29 31 1 * 5 7 9 11 13

| * * *

| * * *

|* * * *

| * * * *

|

|

|

|


ПРОШЛО ОТ РОЖДЕНИЯ: 7728 ДНЕЙ ИЛИ, 185472 ЧАСОВ ИЛИ, 11128320 МИНУТ

НАИМЕНЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: 11-АВГ-2005

НАИБОЛЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: 21-ИЮЛ-2005


ПРИМЕР № 3


ВВЕДИТЕ ДАТУ РОЖДЕНИЯ В ФОРМАТЕ ДД ММ ГГГГ: 21 09 1957

ВВЕДИТЕ ТЕКУЩУЮ ДАТУ: 22 11 2001


ОБЩАЯ АКТИВНОСТЬ

| * *

| *

| *

| *

| *

| *

|

| *

|* * 24 26 28 30 2 4 6 8 10 12 14 16 18 20 22

|--- * ----------------------------- * ---------------------- ДЕНЬ

| 23 * 27 29 1 3 5 7 9 11 13 15 17 19 21

| * *

| * *

| *

| * *

| * *

| * * * * *

|

|


PRESS ANY KEY, PLEASE...


ФИЗИЧЕСКАЯ АКТИВНОСТЬ

|

|

|

|

| * * * * * * * *

| * * *

| * * *

|* * *

|22 24 26 28 30 * 4 6 8 10 12 14* 16 18 20 22

|------------------------------------------------------------- ДЕНЬ

| 23 25 27 29 1 * 5 7 9 11 13* 15 17 19 21

| * *

| * *

| * *

| * * * *

|

|

|

|


PRESS ANY KEY, PLEASE...


ИНТЕЛЛЕКТУАЛЬНАЯ ОКТИВНОСТЬ

|

|

|

|

| * * * * *

| * * * *

| *

| *

|* 24 26 28 30 2 4 6 8 10* 12 14 16 18 20 22

|- * ------------------------------- * ----------------------- ДЕНЬ

| 23* 25 27 29 1 3 5 7 * 11 13 15 17 19 21

| * * *

| * * *

| * * * *

| * * * *

|

|

|

|


PRESS ANY KEY, PLEASE...


ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ

|

|

|

|

| * * * *

| * * *

| * *

| * *

|22 24 26 28 30 2 4 * 8 10 12 14 16 * 20 22

|------------------------- * ------------------------- * ----- ДЕНЬ

|* 23 25 27 29 1 3 * 5 7 9 11 13 15 17 19* 21

| * * *

| * * *

| * * *

| * * * *

|

|

|

|


ПРОШЛО ОТ РОЖДЕНИЯ: 16133 ДНЕЙ ИЛИ,387192 ЧАСОВ ИЛИ,23231520 МИНУТ


НАИМЕНЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: 3-ДЕК-2001

НАИБОЛЕЕ БЛАГОПРИЯТНЫЙ ДЕНЬ: 17-ДЕК-2001

  1. Описание работы модулей программы


МОДУЛЬ № 1.


PROCEDURE INPUTDATES(VAR D0,M0,Y0,D,M,Y:INTEGER);

{ВВОДИТ ДАТУ РОЖДЕНИЯ И ТЕКУЩУЮ ДАТУ. КОНТРОЛИРУЕТ ПРАВИЛЬНОСТЬ ВВЕДЕННЫХ ДАТ

И ИХ НЕПРОТИВОРЕЧИВОСТЬ (ТЕКУЩАЯ ДАТА ДОЛЖНА БЫТЬ ПОЗЖЕ ДАТЫ РОЖДЕНИЯ)}

VAR

CORRECTLY: BOOLEAN; {ПРИЗНАК ПРАВИЛЬНОСТИ ВВОДА}

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

PROCEDURE INPDATE(TEXT: STRING; VAR D,M,Y:INTEGER);

{ВЫВОДИТ ПРИГЛАШЕНИЕ TEXT, ВВОДИТ ДАТУ В ФОРМАТЕ ДД ММ ГГГГ И

ПРОВЕРЯЕТ ЕЕ ПРАВИЛЬНОСТЬ}

CONST

YMIN=1800; {МИНИМАЛЬНЫЙ ПРАВИЛЬНЫЙ ГОД}

YMAX=2500; {МАКСИМАЛЬНЫЙ ПРАВИЛЬНЫЙ ГОД}

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:=Y>Y0;

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}


PROCEDURE INPUTDATES предназначена для введения дат рождения и текущей; переменная .CORRECTLY производит оценку правильности введенных дат, т.е. проверяет то, чтобы дата рождения была более ранней, нежели текущая дата. Рассмотрим работу подпрограммы. После ввода значений переменных происходит их оценка, подпрограмма выполнится, если хотя бы отличаются дни месяца и текущий день позже дня рождения.


МОДУЛЬ № 2


PROCEDURE GET_NUMBERS_OF_DAYS (D0,M0,Y0,D,M,Y:INTEGER;

VAR DAYS:INTEGER);

{ОПРЕДЕЛЕНИЕ ПОЛНОГО КОЛИЧЕСТВА ДНЕЙ, ПРОШЕДШИХ ОТ ОДНОЙ ДАТЫ ДО ДРУГОЙ}

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

PROCEDURE VARIANT2;

{ПОДСЧЕТ КОЛИЧЕСТВА ДНЕЙ В МЕСЯЦАХ, РАЗДЕЛЯЮЩИХ ОБЕ ДАТЫ}

VAR

MM:INTEGER;

BEGIN {VARIANT2}

MM:=M0;

WHILE MM<M DO

BEGIN

DAYS:=DAYS+SIZE_OF_MONTH[MM];

IF (MM=2) AND (Y0 MOD 4 = 0) THEN

INC(DAYS); {ЕСЛИ ГОД ВЕСОКОСНЫЙ}

INC(MM)

END

END; {VARIANT2}

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

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 (Y0 MOD 4 = 0) THEN

INC(DAYS); {ЕСЛИ ГОД ВЕСОКОСНЫЙ}

INC(MM)

END;

YY:=Y0+1;

WHILE YY<Y 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 Y=Y0 THEN

VARIANT2 {РАЗНИЦА В МЕСЯЦАХ ОДНОГО И ТОГО ЖЕ ГОДА}

ELSE

VARIANT3 {ДАТЫ ОТЛИЧАЮТСЯ ГОДАМИ}

END

END; {GET_NUMBERS_OF_DAYS}

PROCEDURE GET_NUMBERS_OF_DAYS предназначена для определения переменной DAYS, показывающей количество полных дней со дня рождения до текущей даты. Данная процедура


МОДУЛЬ № 3


PROCEDURE FINDMAXMIN(VAR DMIN,DMAX:INTEGER; DAYS:INTEGER);

{ПОИСК КРИТИЧЕСКИХ ДНЕЙ}

CONST

TF=2*3.1416/23.6884; {ПЕРИОД ФИЗИЧЕСКОЙ АКТИВНОСТИ}

TE=2*3.1416/28.4261; {ПЕРИОД ЭМОЦИОНАЛЬНОЙ АКТИВНОСТИ}

TI=2*3.1416/33.1638; {ПЕРИОД ИНТЕЛЛЕКТУАЛЬНОЙ АКТИВНОСТИ}

INTERVAL=30; {ИНТЕРВАЛ ПРОГНОЗА}

VAR

MIN, {НАКАПЛИВАЕТ МИНИМУМ БИОРИТМОВ}

MAX, {НАКАПЛИВАЕТ МАКСИМУМ БИОРИТМОВ}

X:REAL; {ТЕКУЩЕЕ ЗНАЧЕНИЕ БИОРИТМОВ}

I, J, I1, I2:INTEGER;

RES : ARRAY[0..INTERVAL] OF INTEGER;

S : STRING;

K :String[2]; {К - TEMP }

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);

RES[I]:=ROUND(X*5)+9;

IF X>MAX THEN

BEGIN

MAX:=X;

DMAX:=DAYS+I

END

ELSE IF X<MIN THEN

BEGIN

MIN:=X;

DMIN:=DAYS+I

END

END;

ClrScr;

WriteLn ('ОБЩАЯ АКТИВНОСТЬ');

WRITELN(FF,'ОБЩАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1 end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WriteLN (FF,'PRESS ANY KEY, PLEASE...');

Write ('PRESS ANY KEY, PLEASE...'); ReadKey;

{ФИЗИЧЕСКАЯ АКТИВНОСТЬ}

FOR I:=0 TO INTERVAL DO

BEGIN

X:=SIN((DAYS+I)*TF);

RES[I]:=ROUND(X*5)+9;

END;

ClrScr;

WriteLn ('ФИЗИЧЕСКАЯ АКТИВНОСТЬ');

WriteLn (FF,'ФИЗИЧЕСКАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1 end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WriteLN (FF,'PRESS ANY KEY, PLEASE...');

Write ('PRESS ANY KEY, PLEASE...'); ReadKey;

{ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ}

FOR I:=0 TO INTERVAL DO

BEGIN

X:=SIN((DAYS+I)*TI);

RES[I]:=ROUND(X*5)+9;

END;

ClrScr;

WriteLn ('ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ');

WriteLn (FF,'ИНТЕЛЕКТУАЛЬНАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1 end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WriteLN (FF,'PRESS ANY KEY, PLEASE...');

Write ('PRESS ANY KEY, PLEASE...'); ReadKey;

{ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ}

FOR I:=0 TO INTERVAL DO

BEGIN

X:=SIN((DAYS+I)*TE);

RES[I]:=ROUND(X*5)+9;

END;

ClrScr;

WriteLn ('ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ');

WriteLn (FF,'ЭМОЦИОНАЛЬНАЯ АКТИВНОСТЬ');

I1:=D; I2:=SIZE_OF_MONTH [M];

FOR I:=18 DOWNTO 0 DO BEGIN

S:='';

FOR J:=1 TO 67 DO S:=S+' ';

S[4]:='│';

FOR J:=0 TO INTERVAL DO BEGIN

IF RES[J]=I THEN S[J*2+5]:='*';

If (S[J*2+5]=' ') and (i=10) and (I1 div 2 = I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (S[J*2+5]=' ') and (i=8) and (I1 div 2 <> I1/2) then

Begin

Str (I1,K); Delete (S,J*2+5,2);

If I1<10 then Insert (K+' ',S,J*2+5) else Insert (K,S,J*2+5)

end;

If (i=10) or (i=8) then Begin I1:=I1+1; If i1>i2 then I1:=1; end;

If (S[J*2+5]=' ') and (i=9) then S[J*2+5]:='─';

END;

If i=9 then s:=s+'ДЕНЬ';

WRITELN(S);

WRITELN(FF,S);

If i=9 then I1:=D;

END;

WRITELN;

WRITELN(FF);

WRITELN;

END; {FINDMAXMIN}


PROCEDURE FINDMAXMIN ищет критические дни на интервале исследования и отправляет их в текстовый файл для хранения. Также данная подпрограмма формирует графики изменения биоритмов человека и осуществляет их вывод на экран монитора.


^ Модуль № 5 (Вывод критических дней)


Осуществляет вывод критических дат в формате ДД – МММ – ГГГГ на экран монитора.


PROCEDURE WRITEDATES(DMIN,DMAS,DAYS:INTEGER);

{ОПРЕДЕЛЕНИЕ И ВЫВОД ДАТ КРИТИЧЕСКИХ ДНЕЙ. ВЫВОД ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ О

КОЛИЧЕСТВЕ ПРОЖИТЫХ ДНЕЙ, ЧАСОВ, МИНУТ}

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

PROCEDURE WRITEDATE(TEXT:STRING; DD:INTEGER);

{ОПРЕДЕЛЕНИЕ ДАТЫ ДЛЯ ДНЯ DD ОТ МОМЕНТА РОЖДЕНИЯ. В ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ D,

M И Y ИМЕЕТСЯ ТЕКУЩАЯ ДАТА, В ПЕРЕМЕННОЙ DAYS - КОЛИЧЕСТВО ДНЕЙ, ПРОЩЕДШИХ

ОТ МОМЕНТА РОЖДЕНИЯ ДО ТЕКУЩЕЙ ДАТЫ. ВЫВОДИТСЯ СООБЩЕНИЕ TEXT И НАЙДЕННАЯ

ДАТА В ФОРМАТЕ ДД-МЕС-ГГГГ}

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);

WRITELN(FF,TEXT,D0,'-',NAMES_OF_MONTHES[M0],'-',Y0);

END; {WRITEDATE}


^ Модуль № 6 (основная программа)


BEGIN {ГЛАВНАЯ ПРОГРАММА}

ASSIGN(FF,'ГРАФРИТМ.RES');

REWRITE(FF);

INPUTDATES(D0,M0,Y0,D,M,Y);

GET_NUMBERS_OF_DAYS(D0,M0,Y0,D,M,Y,DAYS);

FINDMAXMIN(DMIN,DMAX,DAYS);

WRITEDATES(DMIN,DMAX,DAYS);

CLOSE(FF);

READLN

END.


Данный модуль проводит обращение к отдельным модулям программы (процедурам).


  1. Вывод




  1. Используемая литература




    1. Ю. Федоренко «Алгоритмы и программы на Turbo Pascal» (издательство «Питер» 2001 год)

    2. «Информатика базовый курс» (под редакцией С.В. Симоновича) (издательство «Питер» 2001 год)

    3. С.А. Немнюгин «Turbo Pascal» (издательство «Питер» 2001 год)

    4. Н. Вирт «Алгоритмы + структуры данных = программы» (издательство «Мир» 1985 год)

    5. Э.З. Любимский, В.В. Мартынюк, Н.П. Трифонов «Программирование» (издательство «Наука» 1980 год)

    6. Г.И. Святозарова, А.А. Мельников, А.В. Козловский «Практикум по программированию на языке БЕЙСИК» (издательство «Наука» 1988 год)



Скачать файл (214 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации