C++问题 关于汽车加油

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:18:03
随着城市里汽车数量的急速增长,汽车加油站也渐渐多了起来。通常汽车加油站的结构基本上是:入口和出口为单行道,加油车道可能有若干条。每辆车加油都要经过三段路程,第一段是在入口处排队等候后进入加油车道;第二段是在加油车道,设有2个加油车道,两个加油车道可同时加油,但不同的车加油时间长短不同;加完油后车在第三段出口处排队等候离开,采用队列模拟车辆的排队过程。请编写程序模拟这个过程。要求在给定加油车辆数据后,输出车辆的出站顺序。
(为每辆车的加油时间根据车型确定,车型由随机函数提供)

已知每个车的加油时间,然后就是2个加油点的时间比较,找出小的并让下一个车加油。
代码如下:

#include <iostream>
#include <vector>
#include <time.h>
#include<cmath>
#include <algorithm>
using namespace std;

struct Node
{
int id;
int over_time;

};
void Car2(int N)
{
vector<int> ctime;
srand((unsigned int)time(NULL));

int i;
for(i=0;i<N;i++)
{
int t= rand()%100+10;
ctime.push_back(t);
}
int t1,t2,id1,id2;
id1= 0;
t1 = ctime[0];
t2 = ctime[1];
id2= 1;

vector<Node> res;
Node tmp;
for(i=2;i<N;i++)
{
if( t1<= t2 )
{
tmp.id = id1;
tmp.over_time = t1;
res.push_back( tmp ); // 找出早出来的
t1 += ctime[i]; // 下一辆车进来加油,并记录加完油时间
id1 = i; // 记录加油车 id
}