首页 > 编程语言 >【C++ Primer Plus习题】16.6

【C++ Primer Plus习题】16.6

时间:2024-09-17 21:25:05浏览次数:12  
标签:cout temp long 16.6 time 习题 Primer line wait

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

这里是引用
在这里插入图片描述
在这里插入图片描述

解答:
main.cpp

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <queue>

using namespace std;

const int MIN_PER_HR = 60;

class Customer
{
private:
	long arrive;
	int processtime;
public:
	Customer() :arrive(0), processtime(0){}
	void set(long when);
	long when()const { return arrive; }
	int ptime()const { return processtime; }
};

void Customer::set(long when)
{
	processtime = rand() % 3 + 1;
	arrive = when;
}

typedef Customer Item;

bool newcustomer(double x);

int main()
{
	srand(time(0));
	cout << "Case Study: Bank of Heather Automatic Teller\n";
	cout << "Enter maximum size of queue: ";
	int qs;
	cin >> qs;
	queue<Item>line;
	cout << "Enter maximum size of simulation hours: ";
	int hours;
	cin >> hours;
	long cyclelimit = MIN_PER_HR * hours;

	cout << "Enter the average number of customers 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_line = 0;
	long wait_time = 0;
	long line_wait = 0;

	for (int cycle = 0; cycle < cyclelimit; cycle++)
	{
		if (newcustomer(min_per_cust))
		{
			if (line.size() >= qs)
			{
				turnaways++;
			}
			else
			{
				customers++;
				temp.set(cycle);
				line.push(temp);
			}
		}
		if (wait_time <= 0 && !line.empty())
		{
			line.pop();
			wait_time = temp.ptime();
			line_wait += cycle - temp.when();
			served++;

		}
		if (wait_time > 0)
		{
			wait_time--;
		}
		sum_line += line.size();
	}
	if (customers > 0)
	{
		cout << "customers accepted: " << customers << endl;
		cout << "  customers served: " << served << endl;
		cout << "         turnaways: " << turnaways << endl;
		cout << "average queue size: ";
		cout.precision(2);
		cout.setf(ios_base::fixed, ios_base::floatfield);
		cout << (double)sum_line / cyclelimit << endl;
		cout << " average wait time: " << (double)line_wait / served << " minutes\n";
	}
	else
	{
		cout << "No customer!\n";
	}
	cout << "Done!\n";
	return 0;
}

bool newcustomer(double x)
{
	return (rand() * x / RAND_MAX < 1);
}

运行结果:
在这里插入图片描述

考查点:

  • queue容器
  • pop()出队
  • push()入队

2024年9月17日21:09:00

标签:cout,temp,long,16.6,time,习题,Primer,line,wait
From: https://blog.csdn.net/qq_74047911/article/details/142318875

相关文章

  • 【C++ Primer Plus习题】16.5
    大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←问题:解答:#include<iostream>#include<list>usingnamespacestd;template<typenameT>intreduce(T......
  • 数据结构(二叉树)练习题————考前必备合集
    今天在力扣和牛客网上找了一下题,下面附上题目链接,大家先做题再看答案1.检查两颗树是否相同。100.相同的树-力扣(LeetCode)2.另一颗树的子树。572.另一棵树的子树-力扣(LeetCode)3.翻转二叉树。226.翻转二叉树-力扣(LeetCode)4.判断一颗二叉树是否是平衡二叉树。110.......
  • 第七章习题13-用递归方法求n阶勒让多项式的值
     ......
  • Java-数据结构-二叉树-习题(二) (´▽`)ノ
    文本目录:❄️一、习题一(分层遍历):   ▶ 思路:    ▶代码:❄️二、习题二(二叉树的最近公共祖先):    ▶ 思路: ▶代码: ❄️三、习题三(从前序和中序遍历序列中构造二叉树):     ▶ 思路:  ▶代码:❄️四、习题四(从中序和后序遍历序列中构造二......
  • C++的习题
    C++的习题类与对象习题1:(const成员函数)假设AA是一个类,AA*abc()const是该类的一个成员函数的原型。若该函数返回this值,当用x.abc()调用该成员函数后,x的值是()A.可能被改变B.已经被改变C.受到函数调用的影响D.不变A.此成员函数被定义为const常方法,代表在......
  • 引言 -- 1.6 习题
    计算机系统可划分为哪几个层次,各层次之间的界面是什么?你认为这样划分层次的意义何在?在三台不同指令系统的计算机上运行同一程序P时,A机器需要执行1.0×10^9条指令,B机器需要执行2.0×10^9条指令,C机器需要执行3.0×10^9条指令,但三台机器的实际执行时间都是100秒。请分别计......
  • C++ Primer Plus 第六版中文版(上)
    参考资料:《C++PrimerPlus第六版中文版》笔记作者:Mr.Crocodile欢迎转载文章目录开始学习C++头文件命名规定名称空间`cout`、`cin`函数处理数据简单变量变量命名规则整型运算符`sizeof`和头文件climitsclimits中的符号常量变量初始化整型字面量整型字面量后缀char......
  • (赠源码)java+Springboot+mysql全省中小学师生共建习题交流与指导平台031619-计算机毕业
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于全省中小学师生共建习题交流与指导平台当然也不能排除在外,随着网络技术的不断成熟,带动了全省中小学师生共建习题交流与指导平台,它彻底改变了过去传统的管理方式,不仅使服务管理......
  • cpp primer plus 第七章
    7.1函数基本知识7.1.1定义函数函数分为两类:有返回值与无返回值的函数。对于有返回值的函数,必须使用返回语句,将值返回给调用函数。若函数包含多条返回语句,则函数在执行第一条返回语句后结束。7.1.2函数原型声明函数如果在main函数后方,则在前面声明函数(复制函数定义中的......
  • NOIP 复习题之动态规划
    AT_joi2022ho_c選挙で勝とう首先要先把协作者买出来,再对于之后的州把买的协作者全部用上。则我们可以先枚举需要的协作者数量\(x\),可以知道的是:我们枚举选择哪些\(x\)个协作者,再在剩下的州中选择\(A_i\)最小的\(K-x\)个州即可。则考虑dp。我们对\(B_i\)进行排序后,协作......