Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Моделирование ЭВМ

tf(fout,"%f ",float((x=Rnd(x)))/65536);
  fclose(fout);
}
 
 
 
Приложение № 3
 
uses crt;
var f1,f2,f3,f4:text;
    i:integer;
    x,z1,z2,y1,y2,a,y3,y4,y5,y6:real;
 
procedure norm1(var x1,x2:real);
begin
   z1:=random;
   z2:=random;
   x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);
   x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);
   x1:=sqrt(2)*x1+16;
   x2:=sqrt(2)*x2+16;
end;
 
procedure norm2(var x1,x2:real);
begin
   z1:=random;
   z2:=random;
   x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);
   x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);
   x1:=sqrt(2)*x1+17;
   x2:=sqrt(2)*x2+17;
end;
 
procedure norm3(var x1,x2:real);
begin
   z1:=random;
   z2:=random;
   x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);
   x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);
   x1:=sqrt(2)*x1+18;
   x2:=sqrt(2)*x2+18;
end;
 
procedure expon (a:real ; var x: real);
begin
   z1:=random;
   x:=-(1/a)*ln(z1);
   x:=sqrt(1/sqr(a))*x+0.8;
end;
 
Begin
   clrscr;
   assign(f1,'d:tpnorm-1.dat');
   rewrite(f1);
   assign(f3,'d:tpnorm-2.dat');
   rewrite(f3);
   assign(f4,'d:tpnorm-3.dat');
   rewrite(f4);
 
   writeln(' Нормальный закон:');
   for i:=1 to 500 do
      begin
         norm1(y1,y2); write(f1,y1,' ');write(f1,y2,' ');
         norm2(y3,y4); write(f3,y3,' ');write(f3,y4,' ');
         norm3(y5,y6); write(f4,y5,' ');write(f4,y6,' ');
                                       Приложение № 3 (продолжение)
 
      end;
   close (f1); close (f3); close (f4);
 
   assign(f2,'d:tpexp.dat');
   rewrite(f2);
   writeln('Экспоненциальный закон ');
   writeln('Введите параметр a: '); readln(a);
   for i:=1 to 500 do begin expon(a,x);write(f2,x,' '); end;
   close(f2);
End.
 
 
 
                                                  Приложение № 4
 
//стохастическая модель системы
#include
#include
 
const emb=1;    //единица машинного времени
FILE *ravn, *norm1, *norm2, *norm3, *exp;
float a;
 
int ravnom()
{ fscanf(ravn,"%f ",&a);
  return int(a*5);
}
 
int normal1()
{ fscanf(norm1,"%f ",&a);
  return int(a*10);
}
 
int normal2()
{ fscanf(norm2,"%f ",&a);
  return int(a*10);
}
 
int normal3()
{ fscanf(norm3,"%f ",&a);
  return int(a*10);
}
 
int expon()
{ fscanf(exp,"%f ",&a);
  return int(a*10);
}
//------------------------- основная программа ----------------------
main()
{ int tp=100;   //интервал между приходами пользователей
  int tgz1=160; //время подготовки задания 1-ым пользователем
  int tgz2=170; //время подготовки задания 2-ым пользователем
  int tgz3=180; //время подготовки задания 3-им пользователем
  int tm=8;     //время выполнения задания на ЭВМ
  int k=500;    //количество промоделированных на ЭВМ заданий
  int t=0;      //время
 
  char nz=0;    //наличие заявки на входе системы
  char cikl=0;  //цикл прихода заявок
  char pz1=0;   //подготовка задания на сетевой машине 1
  char pz2=0;   //подготовка задания на сетевой машине 1
  char pz3=0;   //подготовка задания на сетевой машине 1
  char znw=0;   //наличие заявки на выполнение задания
  char wz=0;    //выполнение задания на ЭВМ
  char ocher[50];  //очередь
  char n=0;     //индекс свободного элемента в очереди
  int w2=0;     //количество вып. заданий от 2-го пользователя
 
  ravn=fopen("ravnomer.dat","r");
  norm1=fopen("norm1.dat","r");
  norm2=fopen("norm2.dat","r");
  norm3=fopen("norm3.dat","r");
  exp=fopen("exp.dat","r");
  tgz1=normal1();
 
Приложение № 4 (продолжение)
 
 
  tgz2=normal2();
  tgz3=normal3();
  tm=expon();
  tp=10+ravnom();
 
//----------- моделирующий цикл -----------------------------------
  while (k!=0)
  { t=t+emb;
//появление пользователя
       if (t%tp==0)
            { tp=10+ravnom();
              fscanf(ravn,"%f ",&a);
              if (a<0.4) nz=1;
              if (a>0.4 && a<0.5) nz=2;
              if (a>0.5) nz=3;
            }
 
//начало подготовки задания
       switch (nz)
       { case 1: pz1=1; nz=0; break;
            case 2: pz2=1; nz=0; break;
            case 3: pz3=1; nz=0;
       }
//подготовка задания
       if (pz1==1)
            if (tgz1==0) {pz1=0; znw=1; tgz1=normal1();} else tgz1=tgz1-
emb;
       if (pz2==1)
            if (tgz2==0) {pz2=0; znw=2; tgz2=normal2();} else tgz2=tgz2-
emb;
       if (pz3==1)
            if (tgz3==0) {pz3=0; znw=3; tgz3=normal3();} else tgz3=tgz3-
emb;
 
// запрос на выполнение
       if (n!=0 && wz==0) { wz=ocher[n-1]; n--; } //если очередь не пуста а
ЭВМ свобода
 
                  // то выпол. заявку из очереди
       if (znw!=0)  //если имеется заявка на выполнение
            if  (wz==0) { wz=znw; znw=0; }  //если ЭВМ не заня
Пред.6789
скачать работу

Моделирование ЭВМ

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ