【发布时间】:2012-12-10 17:45:04
【问题描述】:
我正在为多个队列进行模拟。 我应该在开始时输入队列数,然后模拟所有这些。
每个“轮”的每个队列的输出是同时,服务的总数和每个队列的大小。
我的程序崩溃并且没有响应。
它写出第一个队列 och 然后崩溃...
救命!
我认为我的计算是错误的,但我不知道,因为它都崩溃了。
这里是:
#include <iostream>
#include <cstdlib>
#include <list>
#include <ctime>
#include<conio.h>
#include <time.h>
#include <stdlib.h>
#include<dos.h>
#include<windows.h>
using namespace std;
class Customer
{
public:
int servicet;
int served;
Customer()
{
servicet= rand()%150+30;
}
int getServicetime()
{
return servicet;
}
int getServed()
{
return served;
}
int decreaseServeTime()
{
servicet --;
}
};
int totServed=0;
int queues=0;
int inLine=0;
int totTime=0;
int smallestQueue=0;
int temp=0;
int ran=0;
double mean=0;
int served=0;
int serviceTime=0;
int help=0;
int sim=0;
int n=0;
using namespace std;
int main()
{
cout<<"Number of Cashiers?: "<<endl;
cin >> queues;
cout <<"How long simulation?: "<<endl;
cin >> sim;
list<Customer> *cashiers[queues];
list<Customer> *cust;
for(int i=0; i<=queues; i++)
{
cust = new list<Customer>;
cashiers[i] = cust;
}
srand(time(0));
while(n<sim)
{
Sleep(2000);
ran= rand()%4;
smallestQueue = cashiers[0] ->size();
for(int j=0; j<ran; j++)
{
for(int k=0; k<queues; k++)
{
temp = cashiers[k]->size();
if(temp<=smallestQueue)
{
smallestQueue = temp;
help=k;
}
}
Customer C;
cashiers[help]->push_back(C);
inLine++;
}
for(int i=0; i<queues; i++)
{
if(serviceTime>0)
{
serviceTime = cashiers[i]->front().getServicetime();
cashiers[i]->front().decreaseServeTime();
}
else if(serviceTime==0)
{
cashiers[i]->pop_front();
served++;
}
}
totTime++;
int cash=1;
for(int i=0; i<queues; i++)
{
if(inLine!=0)
{
cout <<"Kassa: "<<cash<<endl;
inLine = cashiers[i]->size();
mean = (totTime/inLine);
totServed +=served;
cash++;
}
cout <<inLine<<" "<<mean<<" "<<totServed<<endl;
}
n++;
}
system("pause");
}
【问题讨论】:
-
运行模拟,很快我注意到
inLine = cashiers[i]->size()将inLine设置为0。这导致mean = (totTime/inLine)导致除以零错误。 -
为了将来参考,如果您避免使用特定于 Windows 的
#includes(例如conio.h、dos.h和windows.h),您可能会在 Stack Overflow 上获得更好的运气。我们中的许多人不使用 Windows,删除这些包含只是贡献者和答案之间的另一项任务。
标签: c++ queue simulation