После того как модельное время становится больше 6000 мин., результаты моделирования выводятся в файл в виде таблицы . Первый столбец таблицы - номера самолетов.
int main(void)
{
ofstream ofs("test10.txt");
int w=0;
while(w<10){
simulation(ofs);
w++;
}
B стеке функции int main(void) отводится память под объект ofs класса ofstream. Таким образом открывается для записи файл "test10.txt" и производится 10 запусков функции simulation. В результате в файле "test10.txt" записывается информация о результатах моделирования ( 10 тестовых таблиц ).
Полный текст программы
#include <fstream.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
void normt(unsigned *xx);
void normt(unsigned *xx)
{
int i,j;
double x[400];
double a,b,w;
int s=60,u=180;
float l;
randomize();
i=0;
while(i<400){
x[i]=random(21)/20.0;
i++;
}
randomize();
i=0;
j=0;
while(j<400){
a =2*x[j]-1;
b=2*(random(21)/20.0)-1;
w=a*a+b*b;
if (w>0&&w<=1){
l=-2.0*log(w)/w;
*(xx+i)=a*sqrt(l)*s+u;
*(xx+i+1)=b*sqrt(l)*s+u;
if(*(xx+i)<120&&*(xx+i)>60&&*(xx+i+1)<120&&*(xx+i+1)>60)
i+=2;
}
else if(w==0){
*(xx+i)=u;
*(xx+i+1)=u;i+=2; }
j++;
}
}
class Fifo_a {
unsigned char a,f[5];
void move (unsigned char i);
public:
Fifo_a(){a=5;f[0]=0;f[1]=1;f[2]=2;f[3]=3;f[4]=4;}
unsigned char get_a(void){return a;}
void write_f(unsigned char i)
{
f[a]=i;
a++;
}
unsigned char take_off_f(unsigned char i=0);
};
void Fifo_a::move(unsigned char i)
{while(i < a){f[i]=f[i+1];i++;}}
unsigned char Fifo_a::take_off_f(unsigned char i)
{
unsigned char j;
if(f[i]>2){
j=i;
while(j<a&&f[j]>2)
j++;
if(j<a)
i=j;
}
j=f[i];
move(i);
a--;
return j;
}
class Aircraft {
unsigned int begin_t,
nonuse_t,
min_t,
max_t;
unsigned char f,
n,
n_cont,
cur_cont;
public:
Aircraft() {nonuse_t=0;f=0;min_t=max_t=0;n=0;n_cont=80;cur_cont=0;begin_t=0;}
unsigned char get_f(void){return f;}
unsigned char get_n(){return n;}
void write_f(unsigned char i){f=i;}
void write_140(){n_cont=140;}
void write_nt(unsigned t){nonuse_t+=t;}
unsigned get_b(void){return begin_t;}
void inc_n(void){if(n==0)max_t=min_t=nonuse_t;n++;}
unsigned get_max_t(){return max_t;}
unsigned get_min_t(){return min_t;}
unsigned get_nu(void){return nonuse_t;}
unsigned get_n_cont(void){return n_cont;}
unsigned get_cur_cont(void){return cur_cont;}
void inc_cur_cont(void){ cur_cont++;}
void cur_cont_into_z(void){cur_cont=0;}
void b_t(unsigned int t){begin_t=t;}
void dmaxmin(unsigned int t){ if(max_t<t) max_t=t;else if(min_t>t)min_t=t;}
};
class Gen {
unsigned int time,
cont,
max_cont_t,
min_cont_t,
par_c[6500],
g_cont,
g_cont_t,
nonuse_time;
void maxmincont(unsigned t)
{
if(max_cont_t<t)
max_cont_t=t;
else if(min_cont_t>t)
min_cont_t=t;
}
void gen_cont(void);
public:
Gen() {time=0;cont=0;g_cont=0;
min_cont_t=max_cont_t=0;
g_cont_t=0;nonuse_time=0;
par_c[0]=0;}
void take_off_cont(void);
unsigned get_cont(void){return cont;}
unsigned get_time(void){return time;}
unsigned get_max(void){return max_cont_t;}
unsigned get_min(void){return min_cont_t;}
unsigned get_nt(){return nonuse_time;}
unsigned get_g_cont(){return g_cont;}
unsigned get_g_cont_t(){return g_cont_t;}
void genarator(Fifo_a &fa,Aircraft *ac);
};
void Gen::gen_cont(void)
{time++;par_c[cont]=time;cont++;par_c[cont]=time;cont++;}
void Gen::genarator(Fifo_a &fa,Aircraft *ac)
{
unsigned char i=0;
gen_cont();
while(i<5){
if(time==ac[i].get_b()&&ac[i].get_f()==1){
fa.write_f(i);
ac[i].write_f(0);
}
i++;
}
}
void Gen::take_off_cont(void)
{
unsigned i=0;
nonuse_time+=time-par_c[0];
if(g_cont==0)max_cont_t=min_cont_t=nonuse_time;
g_cont++;
g_cont_t=time;
maxmincont(time-par_c[0]);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.