📄 a.cpp
字号:
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
#include<math.h>
#define l 0.2
double count=0;
double MAX= RAND_MAX+100000;
double randf()
{
count+=10000;
srand(time(NULL));
int t=rand();
return (double)((t+count)/(double)MAX);
}
double exponential(double x)
{
double y=-(1.0/(double)x)*log(randf());
y=abs(y);
return y;
}
//定义系统参数
int arrivenumber=0;
int leavenumber=0;
class client
{
private:
double arrivetime;
double servicetime;
double leavetime;
public:
client()
{
arrivetime=0;
servicetime=0;
leavetime=0;
}
setarrivetime(double x)
{
arrivetime=x;
}
setservicetime(double y)
{
servicetime=y;
}
getarrivetime()
{
return arrivetime;
}
getservicetime()
{
return servicetime;
}
getleavetime()
{
return leavetime;
}
arrive();
getservice();
leave();
};
client a[10];
client::arrive()
{
static double temparrivetime=0;
if(arrivenumber==0)
{
a[arrivenumber].setarrivetime(0);
a[arrivenumber].setservicetime(exponential(0.1*l));
}
temparrivetime+=this->getarrivetime();
arrivenumber++;
a[arrivenumber].setarrivetime(temparrivetime+exponential(l));
a[arrivenumber].setservicetime(exponential(0.01*l));
cout<<"第"<<arrivenumber-1<<"个顾客到达的时间是"<<arrivetime<<endl;
//加的顺序
}
client::getservice()
{
static double beginservicetime=0;
if(leavenumber==0)
beginservicetime=0;
else if(leavenumber==1)
beginservicetime=a[0].getservicetime();
else if(arrivenumber==leavenumber+1&&a[arrivenumber].getarrivetime()>a[leavenumber].getleavetime())
beginservicetime=a[arrivenumber].getarrivetime();
else
beginservicetime=a[leavenumber-1].getleavetime();
cout<<"第"<<leavenumber<<"个顾客开始服务的时间是"<<beginservicetime<<endl;
}
client::leave()
{
double static templeavetime=0;
if(arrivenumber>leavenumber)
if(a[leavenumber+1].getarrivetime()>a[leavenumber].getarrivetime()+a[leavenumber].getservicetime())
templeavetime+=a[leavenumber+1].getarrivetime()-a[leavenumber].getarrivetime()-a[leavenumber].getservicetime();
templeavetime+=a[leavenumber].getservicetime();
leavetime=templeavetime;
cout<<"第"<<leavenumber<<"个顾客离开的时间是"<<leavetime<<endl<<endl;
leavenumber++;
}
main()
{
while(leavenumber<10)
{
if(a[arrivenumber].getarrivetime()<=a[leavenumber].getservicetime())
a[arrivenumber].arrive();//这儿怎么会一下执行多次呢
else
{
a[leavenumber].getservice();
//if(a[arrivenumber].getarrivetime()<=a[leavenumber].getleavetime())
//a[arrivenumber].arrive();
//else
a[leavenumber].leave();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -