- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用队列的 C++ 数据结构,我的代码输出不正确,我不确定要更改什么。
使用 STL Queue 库的 C++,我无法从我的程序中获得正确的输出。等待时间显示不正确,洗涤开始时间显示不正确。这是我到目前为止的代码:
#include <iostream>
#include <assert.h>
#include <fstream>
#include <queue>
#include <stdlib.h>
using namespace std;
class averager {
private:
int cnt;
int sum;
public:
averager() {
cnt = 0;
sum = 0;
}
void plus_next_number(int value) {
cnt++;
sum += value;
}
double average_time() {
assert(cnt > 0);
return (sum / cnt);
}
int how_many_cars() { return cnt; }
};
class Washmachine {
private:
int time_for_wash;
int time_left;
public:
Washmachine(int n) {
time_for_wash = n;
time_left = 0;
}
bool is_busy() { return time_left > 0; }
void startWashing() {
assert(!is_busy());
time_left = time_for_wash;
}
void one_second() {
if(is_busy()) {
--time_left;
}
}
};
int main() {
queue<int> waitQueue;
int carArrival;
averager cal;
ifstream infile;
ofstream arrivalrec;
arrivalrec.open("arrival_time.txt");
arrivalrec << "Car Number "
<< "Arrival Time "
<< "Car Wash Start Time "
<< "Departure Time "
<< "Wait Time "
<< "Total Time " << endl
<< endl;
int maxWaitTime; // maxWaitTime initially 0:00
int totalWaitTime; // total time customers wait
int endTime = 60; // times for the simulation
int totalServiceTime;
int startTime;
int carNum = 0; // number of cars washed in study
int washTime = 3; // fixed time for a wash in minutes
int DeptTime;
int TotalTime;
int timeleft = 0;
int waitTime;
Washmachine carwashing(washTime);
infile.open("input.txt");
for(int startWash = 0; startWash <= endTime; startWash++) {
infile >> startWash;
waitQueue.push(startWash);
if((!carwashing.is_busy()) && (!waitQueue.empty())) {
carArrival = waitQueue.front();
waitQueue.pop();
cal.plus_next_number(startWash - carArrival);
carwashing.startWashing();
}
carwashing.one_second();
waitTime = startWash - carArrival;
if(maxWaitTime < waitTime) maxWaitTime = waitTime;
// add waiting time for customer to totalWaitTime.
totalWaitTime += waitTime;
totalServiceTime += washTime;
startTime = startWash + waitTime;
TotalTime = startWash + waitTime;
DeptTime = startTime + washTime;
// increment the number of customers served
carNum++;
// set washAvailable to false since equipment back in service
// output the summary data for the simulation include number of cars
// washed, average customer waiting time and pct of time wash operates
arrivalrec << carNum << " " << startWash
<< " " << startTime << " "
<< DeptTime << " " << waitTime << " "
<< TotalTime << endl
<< endl
<< endl;
}
arrivalrec << "Maximum customer waiting time for a car wash is " << maxWaitTime
<< " minutes" << endl;
arrivalrec << "Percentage of time car wash operates is "
<< ((totalServiceTime / endTime) * 100.0) << '%' << endl;
arrivalrec << "Number of customers remaining at " << endTime << " is "
<< waitQueue.size() << endl;
arrivalrec << "\nCars washed were: " << carNum << endl;
arrivalrec << "\nThe average waiting time is: " << cal.average_time() << endl;
int car_denied = 0;
while(!waitQueue.empty()) {
waitQueue.pop();
car_denied++;
}
arrivalrec << "\nThe number of denied cars is: " << car_denied << endl;
arrivalrec << endl;
return 0;
}
正确的代码输出
我的代码输出
最佳答案
下面的代码解决了你的任务,除了两个异常(exception):
其余按规定工作:
#include <iostream>
#include <cassert>
#include <fstream>
#include <queue>
#include <cstdlib>
constexpr auto SIMULATION_END_TIME = 80;
constexpr auto OPENING_END_TIME = 60;
using namespace std;
class averager {
private:
int cnt;
int sum;
public:
averager(){
cnt=0;
sum=0;
}
void plus_next_number(int value)
{
cnt++;
sum+=value;
}
double average_time()
{
assert(cnt>0);
return (sum/static_cast<double>(cnt));
}
int how_many_cars()
{
return cnt;
}
};
class Washmachine {
private:
int time_for_wash;
int time_left;
public:
Washmachine(int n) {
time_for_wash = n;
time_left = 0;
}
bool is_busy() {
return (time_left > 0);
}
void startWashing() {
if(!is_busy()) {
time_left = time_for_wash;
}
}
void one_second(){
if(is_busy()) {
--time_left;
}
}
};
int main() {
queue<int> waitQueue;
int carArrival = 0;
averager cal;
ifstream infile;
ofstream arrivalrec;
arrivalrec.open("arrival_time.txt");
arrivalrec << "Start of Simulation" << endl;
arrivalrec << "Car\t\tArrival\tCar Wash\tDeparture\tWait\tTotal" << endl;
arrivalrec << "Number\tTime\tStart Time\tTime\t\tTime\tTime" << endl;
arrivalrec << "------------------------------------------------------------" << endl;
int maxWaitTime = 0; // maxWaitTime initially 0:00
int totalWaitTime = 0; // total time customers wait
int totalServiceTime = 0;
int startTime = 0;
int carNum = 0; // number of cars washed in study
int washTime = 3; // fixed time for a wash in minutes
int DeptTime = 0;
int TotalTime = 0;
int timeleft=0;
int waitTime=0;
int temp;
int sw;
int runTime;
Washmachine carwashing(washTime);
infile.open("input.txt");
infile >> temp;
carNum = 1;
for (runTime=1;runTime<=SIMULATION_END_TIME;runTime++){
if (runTime == temp) {
waitQueue.push(temp);
infile >> temp;
}
if((runTime <= OPENING_END_TIME)&&(!carwashing.is_busy())&&(!waitQueue.empty())) {
carArrival=waitQueue.front();
waitQueue.pop();
startTime = runTime;
waitTime=startTime-carArrival;
totalWaitTime += waitTime;
TotalTime = washTime + waitTime;
if (maxWaitTime < waitTime)
maxWaitTime = waitTime;
cal.plus_next_number(startTime-carArrival);
carwashing.startWashing();
}
else
{
waitTime++;
}
if (carwashing.is_busy())
carwashing.one_second();
if ((!carwashing.is_busy())&&(startTime >= DeptTime)) {
DeptTime = startTime + washTime;
totalServiceTime += washTime;
arrivalrec << carNum << "\t\t" << carArrival << "\t\t" << startTime
<< "\t\t\t" << DeptTime << "\t\t\t" <<
waitTime << "\t\t" << TotalTime << endl;
carNum++;
}
}
int car_denied = 0;
while (!waitQueue.empty())
{
arrivalrec << carNum << "\t\t" << waitQueue.front() << "\tCar arrived after closing time and was not served." << endl;
waitQueue.pop();
car_denied++;
carNum++;
}
arrivalrec << "End of Simulation" << endl << endl;
arrivalrec << "Statistics:" << endl;
arrivalrec << "\tTotal wait time: " << totalWaitTime << " minutes" << endl;
arrivalrec << "\tMaximum customer waiting time for a car wash is "
<< maxWaitTime << " minutes" << endl;
arrivalrec << "\tPercentage of time car wash operates is "
<< ((totalServiceTime / static_cast<double>(OPENING_END_TIME)) * 100.0)
<< " %" << endl;
arrivalrec<<"\tCars washed were: "<<carNum - car_denied - 1<<endl;
arrivalrec<<"\tThe average waiting time is: "<<cal.average_time()<<endl; // TODO: Convert time to minutes and seconds
arrivalrec<<"\tThe number of denied cars is:"<<car_denied<<endl;
arrivalrec<<endl;
return 0;
}
arrival_time.txt
文件的输出是:
Start of Simulation
Car Arrival Car Wash Departure Wait Total
Number Time Start Time Time Time Time
------------------------------------------------------------
1 1 1 4 2 3
2 2 4 7 4 5
3 4 7 10 5 6
4 10 10 13 2 3
5 13 13 16 2 3
6 15 16 19 3 4
7 16 19 22 5 6
8 75 Car arrived after closing time and was not served.
End of Simulation
Statistics:
Total wait time: 9 minutes
Maximum customer waiting time for a car wash is 3 minutes
Percentage of time car wash operates is 35 %
Cars washed were: 7
The average waiting time is: 1.28571
The number of denied cars is:1
请检查您的代码,如果适合您的问题,请接受此答案。谢谢。
关于C++ 汽车模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58332835/
我目前正在研究车辆编队,为此我需要在 python opencv 中设计一个代码,用于根据分类计算车辆数量。输入是实时交通视频。目的是为边界框找到一个平均大小“x”,并说对于汽车它是“x”,对于公共(
LISP 又一次难住了我……为什么我不能得到列表中最后一个元素的值?我有一个类似于此的列表设置: (setq bar '(((1 2) 3 4 5)((6 7) 8 9 10))) 现在我得到 4 的
我正在尝试将 android.car API 添加到 Android Studio 项目。由于 sdk 默认情况下汽车类不可用,我在 .../car-lib 中完成了 mm 并将生成的 android
我想让我的网站内容居中,但仅限于网页的特定宽度。所以当它超过 500px 时,我希望内容被修复,无法进一步拉伸(stretch)。无论如何都要这样做,还是我最好把所有东西都修好?希望有意义的是添加一些
这是绘制汽车零件的绘图函数,在这个函数中检查汽车轮辋并检查标志,我需要在移动汽车时旋转轮胎轮辋。由于轮辋已旋转但从汽车模型中取出,因此无法正常工作,当我按下向上箭头键时,但汽车确实在移动。 我还在初始
我正在尝试从仅包含一辆车和简单背景的图像中分割汽车,如 但是我从我的实现中得到的是这个 和 分别 但它非常容易处理几乎已经分割的图像,例如。 给出类似 的结果 我使用的代码是 import cv2 i
我正在研究我的大学项目之一,即opencv python中的object(car)检测,我正在使用opencv 3和python 3.4。我有一个代码,但是当我运行代码时,不会显示输出。它表明该代码没
在 C++ primer 5 中我看到了代码: const int a = 40; auto &b = a; 编译器可以推导出 b 类型:const int &。 我认为这是合理的,因为 a 是 co
这个问题更多的是关于在正确的方向上找到一个点。我继承并开发了一个项目来创建汽车选择数据库(匹配用户偏好)。它已经运行得比较好,但可能会更好(存在一些问题),所以我想研究其他人使用的其他一些算法。我正在
我目前正在搜索 WLAN 协议(protocol)的规范以获取 OBDII 数据。市场上有一些类似 ELM327 的适配器,可以让 iPhone 通过 WLAN 连接到 OBDII 接口(interf
我希望在谷歌地图标记周围制作进度条,如下图所示,或者如何在 map 上的特定位置显示进度条,就像我告诉纬度和经度并显示该位置 最佳答案 在这个短片中,进度标记(标记周围有一系列 8 个圆圈)前进一个表
有谁知道汽车、导航或移动设备对基于触摸屏的无键盘 UI 的需求是否很大? 我知道 Android 是一个非常大、非常流行的平台。 Cocoa Touch 也是如此。 我想要设想的是使用 Java UI
我正在尝试编写一个采用多项式并对其进行化简的程序。每次我运行该程序时,通过调用“(evalexp '( (x 2) (z 8) ) p1)”我都会收到错误消息“Car: + is not a list
使用 jhipster 我创建了运行良好的应用程序,然后我创建了“双向一对多关系”,所有者到汽车。这也工作正常,但我无法弄清楚如何从生成的实体的所有者屏幕中显示所有汽车。如果我选择“车主”,则会从汽车
我一直在使用 Rx 在单个应用程序中创建事件总线(想想 CQRS/ES),它似乎工作得很好。然而,在调查了一堆不同的事件溯源框架之后,我还没有看到使用过一次 Rx。与基于反射/容器的调度程序相比,它似
Android Automotive 中是否存在一种从 OBD2 或 SRS 读取传感器的方法。或者在任何其他汽车 Android 操作系统中。我在 CarSensorManager 中进行了搜索,但
我想知道是否有可能以某种方式确定路由器是否正在改变其位置。我需要知道这一点,因为我正在编写一个将在 WiFi 网络上工作的移动应用程序(连接同一网络上的人/连接到同一路由器)。我知道移动设备可以探索网
我知道这是一个非常开放的问题,但有谁知道我如何确定用户是否乘坐公共(public)交通工具?理想情况下,我会运行一个后台服务,这样只有乘坐公共(public)交通工具的订阅者才能收到我的提醒。 最佳答
我最近开始学习 OOP,这让我很困惑。我想制作 super 汽车和电动或化石汽车作为其子类。 `abstract class Electric extends Car`. 问题是我只想创建 Priva
我做了一个演示项目(来自 github 上的 Moving-MKAnnotationView 演示),用于在 map 上移动汽车,下面是它的链接 https://github.com/pratikbh
我是一名优秀的程序员,十分优秀!