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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 16:39   #1
legioneer
Новичок
Джуниор
 
Регистрация: 31.10.2010
Сообщений: 2
По умолчанию Паскаль. Переделать в непрерывное...

Доброго времени суток.
Такая задача:

Алгоритм такой
P1 Ttek<=3600
Текущее время менее1 часа
P2Ttek=Tprih
Текущее время совпадает с временем прихода очередной заявки
P3Ttek>=Tpol и Ttek<=30*((round(Tpol)div30)+D)+5)
Текущее время в интервале поломки
P4Ttek=Tpol
Текущее время совпадает с временем поломки
P5Ttek=Tvost
Текущее время=времени восстановления

A0 определение начального состояния
A1 определение времени прихода следующей заявки
A2 замедление процесса
A3 увеличение числа отказов
A4 определение времени получения выходного сигнала
A5 определение времени восстановления системы
A6 определение времени следующей поломки ЭВМ 1
A7 возвращение технологического процесса к нормальному ритму
A8 определение времени нахождения в заторможенном состоянии
A9 увеличение текущего времени
A10 вывод результатов


Вот код программы
Цитата:
var Ttek:real;
Tprih,Tpol,Tvost,Tvyh,Tzat:real;
K,D,N:integer;
function norm(m,q:integer):integer;
var i1:integer;
r,z:real;
begin
for i1:=1 to 12 do
r:=r+random;
z:=r-6;
norm:=round(z*q+m);
end;

begin
randomize;
Ttek:=0; {A0}
Tprih:=0; {A0}
K:=1; {A0}
Tpol:=norm(300,30); {A0}
Tvost:=Tpol+100; {A0}
Tzat:=0; {A0}
While Ttek<=3600 do {P1}
begin
If Ttek=Tprih then {P2}
begin
Tprih:=Tprih+K*norm(10,2); {A1}
If Tvyh>Tprih then K:=2; {A2}
If round(Tpol) mod 30 >0 then D:=1 else D:=0;
if (Ttek>=Tpol) and (Ttek<=30*((round(Tpol) div 30)+D)+5) then {P3}
begin
N:=N+1; {A3}
K:=2; {A2}
end;
If Tvyh>Ttek then Tvyh:=Tvyh+3 else Tvyh:=Ttek+3; {A4}
end;
if Ttek=Tpol then {P4}
Tvost:=Tpol+100; {A5}
If Ttek=Tvost then {p5}
begin
Tpol:=Tpol+norm(300,30); {A6}
K:=1; {A7}
end;
If K=2 then Tzat:=Tzat+1; {A8}
Ttek:=Ttek+1; {A9}
end;{while}

Writeln('process v zatormozhennom sostoyanii nahodilsya ',Tzat:2:0,' sekund'); {A10}
Writeln('poteryano ',N,' paketov'); {A10}
end.
Обозначил А(процедуры) и P(операторы) в коде.

У меня нормальное распределение, но дискретное что -то(не совсем понял, что преподаватель имел ввиду), а нужно вместо дискретного использовать непрерывное, то есть function norm(m,q:integer):integer; (вместо интеджер должно быть реал), round вообще не должно быть в программе,
Ttek:=Ttek+1; по другому должно быть, ибо время прихода заявки дробное должно получиться.
Помогите пожалуйста переделать, а то я в программировании не силен.
Заранее благодарен!
legioneer вне форума Ответить с цитированием
Старый 01.11.2010, 17:39   #2
legioneer
Новичок
Джуниор
 
Регистрация: 31.10.2010
Сообщений: 2
По умолчанию

Все переделали...
Цитата:
var Ttek:extended;
Tprih,Tpol,Tvost,Tvyh,Tzat:extended ;
K,D,N:integer;
q:real;
a:string;
function norm(m,q:integer):extended;
var i1:integer;
r,z:real;
begin
for i1:=1 to 12 do
r:=r+random;
z:=r-6;
norm:=z*q+m;
end;

begin
randomize;
Ttek:=0;
Tprih:=0;
K:=1;
Tpol:=norm(300,30);
Tvost:=Tpol+100;
Tzat:=0;
While Ttek<=3600 do
begin
If Ttek<=Tprih then
begin
Tprih:=Tprih+K*norm(10,2);
If Tvyh>Tprih then K:=2;
If trunc(Tpol) mod 30 >0 then D:=1 else D:=0;
if (Ttek>=Tpol) and (Ttek<=30*((trunc(Tpol) div 30)+D)+5) then
begin
N:=N+1;
K:=2;
end;
If Tvyh>Ttek then Tvyh:=Tvyh+3 else Tvyh:=Ttek+3;
end;
if Ttek<=Tpol then
begin
q:=random+0.01;
If q>=1 then q:=random-0.01;

Tvost:=Tpol-100*ln(1-q);
k:=1;
end;
If Ttek>=Tvost then
begin
Tpol:=Tpol+norm(300,30);
K:=1;
end;
If K=2 then Tzat:=Tzat+1;
Ttek:=Ttek+1;
end;{while}

Writeln('process v zatormozhennom sostoyanii nahodilsya ',Tzat:2:0,' sekund');
Writeln('poteryano ',N,' paketov');

end.
Всем спасибо! хотя бы за то что просмотры есть в теме)

Последний раз редактировалось legioneer; 01.11.2010 в 17:50.
legioneer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать прогу с списком из С++ в Паскаль(Delphi) Olya90 Помощь студентам 3 27.05.2009 22:11
Непрерывное перемещение элементов по ListBox kodov Общие вопросы Delphi 2 12.08.2008 20:07
Помогите переделать 2 задачи под динамические массивы (Паскаль) mpegable Помощь студентам 2 27.05.2008 17:32