Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2011, 18:02   #1
Luckyman
Пользователь
 
Регистрация: 15.02.2011
Сообщений: 11
По умолчанию Процедуры и функции Paskal

Всем привет! Нужно написать программу на Паскале с использование процедуры и функции...
Условие задачи:
Студент должен записаться на сдачу в один из четырех предложенных дней. Написать программу, Физическое, эмоциональное и умственное состояние человека меняется циклически со дня рождения с периодом соответственно 23, 28 и 33 дня. Для К-го дня со дня рождения состояние определяется по формуле:
y = sin ((k/p - [k/p])*2П
где Р - период 23,28 и 33 дня.
[k/p] -целевая часть от деления.


Листинг программы

uses crt;
type date=record
d,m,g:integer
end;
const m:array[1..12]of integer=(31,28,31,30,31,30,31,31,30 ,31,30,31); {кол-во дней в месяцах}
var dr,de:date; {день рожд. и день экзам.}
bmax:real; {максимальное значение биоритма}
no:integer; {номер более подходящего дня}
bf,be,bu:real; {значение физич., эмоц., умств. состояний}
i,di,k:integer;
ch:char;

begin
clrscr;
textbackground(black);
textcolor(white);
window(15,3,75,25);
writeln('Вашему вниманию представляется программа,');
writeln('которая определяет наиболее подходящий');
writeln('день для сдачи экзамена (из четырёх) с');
writeln('точки зрения наиболее благоприятного');
writeln('состояния биоритмов');
textcolor(red);
writeln('');
writeln('ВНИМАНИЕ!');
writeln('1. Число и месяц - целые одно-/двузначные числа');
writeln('2. Год - целое 4-значное число');
writeln('');
textcolor(white);
writeln('Программу составил студент');
writeln('МГУ ПС группы ');
writeln('иванов ');
textcolor(green);
writeln('г.Москва, 22.2.2011');
gotoxy(24,21);
textcolor(white);
write('Нажмите любую клавишу...');
ch:=readkey;
clrscr;
writeln('Введите дату рождения (целые числа):'); {ввод днея рождения}
write('День: ');
readln(dr.d);
write('Месяц: ');
readln(dr.m);
write('Год: ');
readln(dr.g);
bmax:=-3; ;
writeln;
writeln('Введи даты экзаменов:');
for di:=1 to 4 do
begin
writeln;
writeln('Дата ',di); {ввод даты экзамена}
write('День: ');
readln(de.d);
write('Месяц: ');
readln(de.m);
write('Год: ');
readln(de.g);
k:=0; {вычислим кол-во дней между днем рожд. и датой экзамена}
for i:=dr.g+1 to de.g-1 do {число целых лет}
begin
k:=k+365;
if i mod 4 = 0 then k:=k+1; {поправка на високосный год}
end;
for i:=dr.m+1 to 12 do {число целых месяце в году рожд.}
begin
k:=k+m[i];
if (i=2) and (dr.g mod 4 = 0) then k:=k+1; {поправка}
end;
k:=k+m[dr.m]-dr.d; {число дней в месяце рождения}
if (dr.m=2) and (dr.g mod 4 = 0) then k:=k+1; {поправка}
for i:=1 to de.m-1 do {число целых месяцев в году экзамена}
begin
k:=k+m[i];
if (i=2) and (de.g mod 4 = 0) then k:=k+1;
end;
k:=k+de.d; {день экзамена} {получили кол-во дней}

bf:=sin((k/23-trunc(k/23))*2*pi); {вычисление биоритмов}
be:=sin((k/28-trunc(k/28))*2*pi);
bu:=sin((k/33-trunc(k/33))*2*pi);
writeln('Физическое состояние: ',bf:2:3);
writeln('Эмоциональное состояние: ',be:2:3);
writeln('Умственное состояние: ',bu:2:3);
if (bf+be+bu)>bmax then {проверка на максимальное значение}
begin
bmax:=bf+be+bu;
no:=di;
end;
end;
writeln;
writeln('Наиболее удобный день №',no);
ch:=readkey;
end.
Luckyman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Paskal процедуры и функции Fromki Помощь студентам 17 09.03.2011 02:50
Paskal процедуры и функции Fromki Помощь студентам 1 22.02.2011 13:35
Процедуры и функции Paskal Fromki Помощь студентам 6 09.02.2011 10:23
Использование функции ord.(paskal) netcher Помощь студентам 5 01.03.2009 21:30
выражения и функции языка Object Paskal etrom Помощь студентам 1 23.10.2008 22:42