ОПИСАНИЕ ВХОДНЫХ И ВЫХОДНЫХ ДАННЫХ
Ввод исходных данных (даты рождения человека и текущей даты) осуществляется в формате ДД ММ ГГГГ с клавиатуры по запросу (тип переменных, соответствующих этим значениям, Integer). Для реализации вывода на экран расчетных данных для дат пика и спада биоритмов – наиболее и наименее благоприятных дней использую тип Integer. Для вывода данных о продолжительности жизни в часах минутах и секундах использую Longint («длинный» целый), так как для типа Integer диапазон возможных значений данных от –32768 до +32767. Если учесть, что средняя продолжительность жизни человека около 70 лет, то есть 25550 дней, и соответственно 36792000 часов, то приемлем только тип данных Longint с диапазоном значений от –2147483648 до +2147483647. Программное и аппаратное обеспечение для нормальной работы программы стандартное – Turbo Pascal 7.0 – при отсутствии исполнимого файла. Операционная система MS-DOS 6.0 или Windows95 и выше с режимом эмуляции MS-DOS. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Ввод исходных данных осуществляется с клавиатуры по запросу программы. Данные необходимо вводить строго придерживаясь указанного формата: ЗАКЛЮЧЕНИЕ Программа служит для определения дней максимума и минимума суммарных психо-физических параметров человеческого организма. Может быть использована в повседневной жизни для планирования наиболее важных для человека мероприятий, например: определения дней усиленных тренировок для занимающихся активным спортом, проведения интервью, публичных выступлений для политиков, заключения важных сделок и ведения переговоров для бизнесменов и так далее. СПИСОК ЛИТЕРАТУРЫ
1. Абрамов В.Г., Трифонов Н.П. Введение в язык Паскаль. – М. :Наука, 1988.-320 с. 2. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. – М.: Наука, 1987. – 112 с. 3. Бутомо И.Д., Самочадин А.В., Усанова Д.В. Программирование на алгоритмическом языке Паскаль. – Л.: Издательство Ленинградского университета, 1985. – 216 с. 4. Грэхем Р. Практический курс языка Паскаль. – М.: Радио и связь. 1986 – 200 с. 5. Йенсен К., Вирт Н. Руководство для пользователя и описание языка. – М., 1982. 151 с. 6. Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука, 1989. – 160 с. ПРИЛОЖЕНИЕ 1. ЛИСТИНГ ПРОГРАММЫ Program bioritm; {Программа для определения физической, эмоциональной и интеллектуальной активности человека. Вводится дата рождения и текущая дата. Программа вычисляет и выводит на экран общее количество дней часов, минут и секунд, разделяющих обе даты, а также прогнозирует на месяц вперед даты, соответствующие максимуму и минимуму биоритмов} CONST SIZE_OF_MONTH: ARRAY [1..12] OF BYTE= (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var d0,d, {Дни рождения и месяцы} m0,m, {Месяцы рождения и текущий} y0,y, {Годы рождения и текущий} dmin, {Наименее благоприятный день} dmax, {Наиболее благоприятный день} days: integer; {Количество дней от рождения} {------------------------------------------------} 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=1900; {Минимальный правильный год} YMAX=2100; {Максимальный правильный год} 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 (m0 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; {Даты отличаются не только днями: } begin days:=d+Size_of_Month[m0]-d0; {Учесть количество дней в текущем месяце и количество дней до конца месяца рождения} if (y0 mod 4=0) and (m0=2) then inc(days); {Учесть високосный год } if y=y0 then Variant2; {Разница в месяцах одного и того же года} 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: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; if x<min then begin min:=x; dmin:=days+i; end; end; END; {FindMaxMin} {--------------------------------------------} PROCEDURE WriteDates(dmin,dmax,days:integer); {Опреджеление и вывод дат критических дней. Вывод дополнительной информации о количестве прожитых дней, часов, минут и секунд} {---------------------------------------------} PROCEDURE WriteDate(text:string; dd:integer); {Определение даты для дня DD от монента рождения. В глобальных переменных d,m и y имеется текущая дата, в переменной DAYS - количество дней, прошедших от момента рождения до текущей даты. Выводится сообщение TEXT и найденная дата в формате ДД-ММ-ГГГГ.} const Names_of_Monthes:array[1..12] of string[5]= ('янв ','февр','март','апр ','май ', 'июнь','июль','авг ','сент','окт ', 'нояб','дек '); 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} {-----------------------------------------------} var longdays: longint; {"Длинная" целая переменная для часов, минут и секунд} BEGIN {WriteDates} longdays:=days; writeln('Прошло: ',longdays,' дней, ',longdays*24, ' часов, ',longdays*24*60,' минут, ', longdays*24*360,' секунд.'); WriteDate('Наименее благоприятный день: ',dmin); WriteDate('Наиболее благоприятный день: ',dmax); END; {WriteDates} {---------------------------------------------------} BEGIN {ГЛАВНАЯ ПРОГРАММА} Writeln('______________________________'); Writeln(' Программа расчета благоприятных дней '); Writeln(' Ввод данных осуществляйте через пробел '); Writeln('Окончание ввода данных подтвердите с помощью клавиши ENTER'); InputDates(d0,m0,y0,d,m,y); Writeln('-----------------------------------------'); Get_numbers_of_days(d0,m0,y0,d,m,y,days); FindMaxMin(dmin,dmax,days); WriteDates(dmin,dmax,days); END.
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (210)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |