2012-11-01 26 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