⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.cpp

📁 该软件仿真了一个理发店 顾客和服务员的情景
💻 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 + -