#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int Count=0;
int DAY=0;
int ALLDAYS=50000;
int I=0;
int total=0;
ofstream file;
typedef struct Queueelem {
long int cometime;
long int outtime;
Queueelem *next;
}Queueelem,*LQueueelem;//队伍元素信息
struct Queue {
Queueelem *head;
Queueelem *rear;
};//排队队伍
void InitQueue(Queue &Q)
{
Queueelem *temp=new Queueelem;
temp->next=NULL;
Q.head=temp;
Q.rear=Q.head;
}//初始化队列
void EnQueue(Queue &Q,Queueelem *q)
{
q->next=Q.rear->next;
Q.rear->next=q;
Q.rear=q;
}//进队列
Queueelem *DeQueue(Queue &Q)
{
Queueelem *temp;
if (Q.head->next==Q.rear)
{
temp=Q.head->next;
Q.head->next=temp->next;
Q.rear=Q.head;
}
else
{
temp=Q.head->next;
Q.head->next=temp->next;
}
return temp;
}//出队列
int ComeNum()
{
int Comenum;
int temp;
// srand(time(NULL));
temp=rand()%100;
if (temp<23)
Comenum=0;
else if (temp<53)
Comenum=1;
else if (temp<83)
Comenum=2;
else if (temp<93)
Comenum=3;
else if (temp<98)
Comenum=4;
else if (temp<100)
Comenum=5;
return Comenum;
}//今日来车数
void TodayCome(Queue &Q)
{
DAY++;
int comenum=ComeNum();
total+=comenum;
for (int i=0;i<comenum;i++)
{
LQueueelem q=new Queueelem;
q->cometime=DAY;
EnQueue(Q,q);
}
cout<<DAY<<"天,来了 "<<comenum<<"辆车 \n";
file<<DAY<<"天,来了 "<<comenum<<"辆车 \n";
}//今天来到货场的车辆进入系统队列
struct Position{
int cometime;
int intime;
int outtime;
};
struct BOX {
Position position;
int Empty;
};
void main ()
{
file.open("file");
Queue Q;
BOX B[2];
{
B[0].Empty=0;
B[1].Empty=0;
}
InitQueue(Q);
while (DAY<ALLDAYS)
{
for (int j=0;j<2;j++)
{
if (B[j].Empty==1 && B[j].position.outtime==DAY+1)
{
if (DAY>1000)
Count+=B[j].position.outtime-B[j].position.cometime-1;
B[j].Empty=0;
}
}
TodayCome(Q);
for (int jj=0;jj<2;jj++)
{
if (B[jj].Empty==0)
{
LQueueelem q=new Queueelem;
if(Q.head->next!=NULL)
{
q=DeQueue(Q);
B[jj].position.cometime=q->cometime;
B[jj].position.intime=DAY+1;
B[jj].position.outtime=B[jj].position.intime;
B[jj].Empty=1;
cout<<"到来时间 "<<B[jj].position.cometime<<" 离开时间 "<<B[jj].position.outtime<<endl;
file<<"到来时间 "<<B[jj].position.cometime<<" 离开时间 "<<B[jj].position.outtime<<endl;
delete q;
}
}
}
}
cout<<"每天平均推迟卸货车数为:"<<((double)Count)/(ALLDAYS-1000)<<endl;
file<<"一共来车: "<<total<<endl;
file<<"一共延迟车数:"<<((double)Count)<<endl;
file<<"每天平均推迟卸货车数为:"<<((double)Count)/(ALLDAYS-1000)<<endl;
}
M/M/1 排队论C程序
2星 需积分: 50 133 浏览量
2019-09-23
16:44:43
上传
评论
收藏 1KB 7Z 举报
weixin_45505434
- 粉丝: 9
- 资源: 55
最新资源
- 基于Arduino Nano的红外循迹小车源码(高分课设).zip
- 将MS SQL数据库表里的数据内容生成SQL执行语句
- 基于MATLAB的钢板表面缺陷检测系统
- MS SQL里生成行政区域县区信息表和相应数据
- delphi实现DBGrid全选和反选功能
- 25C11F41-2B2A-4D1A-AAA8-7C654526B129.pdf
- Android Studio Jellyfish(android-studio-2023.3.1.18-cros.deb)
- MVC+EF框架+EasyUI实现权限管理源码程序
- python第66-75天,Day66-75.rar
- python后端服务project-of-tornado.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈