2012-11-01 25 views
1

我工作的第C的运动++这就要求模拟服务队列,它要求用圆做,一名维array.So它要求,当客户来到在队列中插入他的名字,他的卡号和队列中的到达时间。所以我的第一个问题是如何将所有这些元素都输入到数组中的一个位置?(我不知道它是否被称为数组或位置的单元格,英文不是我的本地语言)每个客户将不得不以只占用阵列中的一个位置,我必须将他的所有信息插入到一个位置。我已经知道如何插入或从一个圆形队列中提取元素的条件,我只是不知道如何为它们做很多事情。在阵列插入多个元素 - 计时功能

其次,它要求打印的客户有多少时间等待队列取决于多少人是如何在他面前等待(它没有太确切虽然)。

+0

我想你是指一个循环缓冲区 - 作为一个队列是正确的? – Caribou

回答

1

对于第一个问题:你可以创建一个类或结构表示数据的收集,并把整个结构到你的容器?

(编辑:客户现在是一类,有一个构造函数,例如添加实例化) 你要清理它了一点,但这样的:

class Customer { 
private: 
    std::string m_name; 
    int m_card_number; 
    int m_arrival_time; 
public: 
    Customer() : m_card_number(0), m_arrival_time(0) { } // might need default ctor 

    Customer(const std::string name, int card_number, int_arrival time) 
    : m_name(name), m_card_number(card_number), m_arrival_time(arrival_time) 
    { } 
}; 

std::dequeue<Customer> service_queue; // or your container here 

Customer c = Customer(name, card_num, current_time); 
service_queue.push_back(c); 

对于第二个问题;如果你不需要坚持时间,只需要处理差异,一个解决方案就是使用clock。只要您花时间差(以蜱)并且需要转换为秒,就不要忘记用CLOCKS_PER_SECOND除。

+0

我给你说的话,但你可以就如何把班级分成数组的一个单元一个例子,因为我没有真正使用到结构,我想,如果我现在尝试使用结构可能是我惹事情了。至于第二个我不认为时钟会做的原因是什么时钟做的是测量部分代码花费多少时间来运行,我想要做的是打印的客户将有多少时间,以等待得到服务。 – MKB

+0

没问题;我已经添加了编辑。这是你在追求什么?另一方面,如果一个类和一个结构体是'普通旧数据',它们之间没有太大的区别。结构默认情况下具有公共字段,类具有私有。其他差异只有在你开始添加函数或子类时才会起作用。 – WeirdlyCheezy

+0

感谢您的帮助。我想我得到了这个。 – MKB

0

我将推动结构到您的队列,每个结构将持有所需的必要元素。

struct Customer 
{ 
    string name; 
    int ID; 
    double change; 
} 

//in add function... 
Customer newCustomer 
cin >> newCustomer.name >> newCustomer.ID >> newCustomer.change; 
queue.push_back(newCustomer); 


retreiving data is simply asking for each element 
//in a loop printing out the queue 
std::cout << iter->name << iter->ID << iter->change