IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Расчет биоритмов, Требуется помощь
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Составить программу отражения биоритмов человека на заданный интервал времени. Известно, что физическое, эмоциональное и умственное состояния изменяются со дня рождения циклически с периодом 23, 28, 33 дня соответственно. Состояние для Д-го дня со дня рождения определятся по формуле: y=sin(x1),
где x1=(Д/Р - [Д/Р])*2П при P=23,28,33.

[Д/Р] - целая часть от деления

C биоритмами ранее сталкивать не приходилось. Пыталась разобраться, но всё тщетно.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Дальше совсем не получается. Помогите с графиками, пожалуйста.


program bio ;
uses crt;
const
Size_of_Month: array [1..12] of byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var
d0, d, dd1, dd2, { День рождения, день текущий. }
m0, m, dm1, dm2, { Depeche Mode.. ;) }
y0, y, dy1, dy2,
days, dmin, dmax: integer;
tstr: string[1];
Label L1 ;

procedure SplashScreen;
var
tmp: string[1];
begin
textbackground (White) ;
textColor (Red);
ClrScr;
gotoxy (20,1) ;
Writeln('Вашему вниманию представляется программа, ');
gotoxy (18,2) ;
Writeln('которая рассчитывает биоритмы человека' );
gotoxy (20,3) ;
Writeln('на заданный интервал времени');
gotoxy (40,12) ;
writeln('Программу составила студентка');
gotoxy (40,13) ;
writeln('');
gotoxy (49,14) ;
writeln('');
gotoxy (40,15) ;
writeln('') ;
gotoxy (20,24);
writeln('Нажмите любую клавишу для продолжения');
read(tmp);
ClrScr;
end;

procedure iDates(var d0, m0, y0, d, m, y, dd1, dm1, dy1, dd2, dm2, dy2: integer);
var
isCorr: boolean;

procedure rDate(wel: string; var d, m, y: integer);
const
ymin = 1800;
ymax = 2200;
begin
repeat
Write('Введите ' + wel + ' в формате ДД ММ ГГГГ: ');
ReadLn(d, m, y);
isCorr := (y >= ymin) and (Y <= ymax) and (m >= 1)
and (m <= 12) and (d > 0);

if isCorr then
if (m = 2) and (d = 29) and (y mod 4 = 0) then
{foo bar, ибо этого дня не существует..}
else
isCorr := d <= Size_of_Month[m];
if not isCorr then WriteLn('Ошибка в дате');
until isCorr;
end;

begin
repeat
rDate('дату рождения', d0, m0, y0);
rDate('текущую дату', d,m,y);
{test for corr. input}
isCorr := y > y0;
if not isCorr and (y = y0) then
begin
isCorr := m > m0;
if not isCorr and (y = y0) then
begin
isCorr := m > m0;
if not isCorr and (m = m0) then
isCorr := d >= d0;
end;
end;
until isCorr;
rDate('начальную дату диапазона поиска', dd1, dm1, dy1);
rDate('конечную дату диапазона поиска', dd2, dm2, dy2);
end;

procedure getDays (d0, m0, y0, d, m, y: integer; var days: integer);

Procedure mLoop;
var
mm: integer;
begin
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;

procedure ymLoop;
var
mm, yy: integer;
begin
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;

begin
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 mLoop else ymLoop;
end;

end;

procedure parseGraph(d0, m0, y0, dmin, dmax: integer);
const
pPhisics = 2*3.1416/23.6884;
pEmo = 2*3.1416/28.4261;
pIntellect = 2*3.1416/33.1638;
var
dall, dcurr, i: integer;
rP, rE, rI: real;
begin
dall := dmax - dmin;
if dall < 0 then begin
WriteLn('Ошибка: Начальная точка периода привышает конечную.');
end;
for i := 0 to dall do
begin
dcurr := dmin + dall;
rP := sin(dcurr * pPhisics);
rE := sin(dcurr * pEmo);
rI := sin(dcurr * pIntellect);
write(' ['); write(rP); write(' | '); write(rE); write(' | ');
write(rI); write('] ');
end
end;


BEGIN
{ main proc. }
SplashScreen;
iDates(d0, m0, y0, d, m, y, dd1, dm1, dy1, dd2, dm2, dy2);
getDays(d0, m0, y0, d, m, y, days);
getDays(d0, m0, y0, dd1, dm1, dy1, dmin);
getDays(d0, m0, y0, dd2, dm2, dy2, dmax);
parseGraph(d0, m0, y0, dmin, dmax);
read(tstr);


END.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Farfalla @ 17.12.2007 17:02) *

Помогите с графиками, пожалуйста.

Правильно я понял, что ты хочешь графики рисовать в текстовой моде? Типа как когда-то эти биоритмы распечатывали на АЦПУ? smile.gif
Или ты просто хочешь распечатывать значения синусов? Если второе, то это просто - нужно только поставить WriteLn в конце цикла в процедуре ParseGraph.
Если же первое, то придется поизвращаться с печатью пробелов.. Если нужно - я помогу.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Farfalla   Расчет биоритмов   15.12.2007 23:33
compiler   у Фаранова была такая задача(решение из его пример…   16.12.2007 0:04
Farfalla   Дальше совсем не получается. Помогите с графиками,…   17.12.2007 21:02
Lapp   Помогите с графиками, пожалуйста. Правильно я п…   18.12.2007 12:25
Farfalla   Правильно я понял, что ты хочешь графики рисовать…   20.12.2007 6:26
Гость   Нужен именно первый вариант. Было бы здорово, если…   20.12.2007 3:06
Lapp   Все изменения касаются только процедуры ParseGraph…   20.12.2007 10:22
Farfalla   Всё работает, большое спасибо, но сегодня мне ска…   20.12.2007 19:00
Lapp   график по идее должен представлять собой три сину…   21.12.2007 2:40
Farfalla   :blink: А тут и есть три синусоиды в одной коорд…   22.12.2007 5:04
Lapp   График должен быть не в виде текста..( Ну, дружо…   22.12.2007 8:56
Farfalla   Ну, дружочек... Я спросил тебя - тебе нужен граф…   22.12.2007 23:14
Farfalla   А с блок-схемой тут кстати как? Хотя бы этот вар…   24.12.2007 4:48
Lapp   А с блок-схемой тут кстати как? С блок-схемой че…   24.12.2007 18:32
Farfalla   С блок-схемой чего? программы? Так ты сама ее д…   25.12.2007 4:09


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 0:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name