#include"Queue.h"
#include<ctime>
#include<cstdlib>
const int MIN_PER_HR = 60;
bool newcustomer(double x)
{
return (rand()*x / RAND_MAX < 1);
}
int main()
{
srand(time(0));
cout << "CaseStudy: Bank of Heather Automatic Teller\n";
cout << "Enter maximum size if queue: ";
int qs;
cin >> qs;
Queue line1(qs);
Queue line2(qs);
cout << "Enter ther number of simulation hours: ";
int hours;
cin >> hours;
long cyclelimit = MIN_PER_HR*hours;
cout << "Enter the number of simulaters per hour: ";
double perhour;
cin >> perhour;
double min_per_cust;
min_per_cust = MIN_PER_HR / perhour;
Item temp;
long turnaways = 0;//离开人数
long customers = 0;//来的人数
long served = 0;//服务人数
long sum_line1 = 0;//总线长
long sum_line2 = 0;
int wait_time1 = 0;//1等的时间
int wait_time2 = 0;
long line_wait1 = 0;//总等待时间
long line_wait2 = 0;
for (int cycle = 0; cycle < cyclelimit; cycle++)
{
if (newcustomer(min_per_cust))
{
if (line1.isfull())
{
if (line2.isfull())
{
turnaways++;
}
}
else
{
customers++;
temp.set(cycle);
if (line1.queuecount() <= line2.queuecount())
{
line1.enqueue(temp);
}
else
{
line2.enqueue(temp);
}
}
}
if (wait_time1 <= 0 && !line1.isempty())
{
line1.dequeue(temp);
wait_time1 = temp.ptime();
line_wait1 += cycle - temp.when();
served++;
}
if (wait_time2 <= 0 && !line2.isempty())
{
line2.dequeue(temp);
wait_time2 = temp.ptime();
line_wait2 += cycle - temp.when();
served++;
}
if (wait_time1 > 0)
{
wait_time1--;
}
if (wait_time1 > 0)
{
wait_time2--;
}
sum_line1 += line1.queuecount();
sum_line2 += line2.queuecount();
}
if (customers > 0)
{
int line_wait = line_wait1 + line_wait2;
cout << "customers accepted: " << customers << endl;
cout << " customers served: " << served << endl;
cout << " turnaways: " << turnaways << endl;
cout << " awerage queue size: ";
cout.precision(2);
cout.setf(ios_base::fixed, ios_base::floatfield);
cout << (double)sum_line1 / cyclelimit << endl;
cout << (double)sum_line2 / cyclelimit << endl;
cout << " average wait time: " << (double)line_wait / served << " minutes\n";
}
else
{
cout << " No customers!\n";
}
cout << "Done!\n";
system("pause");
return 0;
}
c++primer plus第12章6题,Heather银行想知道,如果在开设一台ATM
最新推荐文章于 2023-01-01 20:52:32 发布