我的功課問:C++ STL使用:棧和隊列
一天的數據集是在頭等艙文件lot.txt可用。
到達/離開代碼:CHAR(A或d)許可證字符串(EX BOSS) 時間整數值表示軍用時間
一個Earlybird的630工人700一位CEO 730店員730經理800甲 VP 900 d祕書930購物者1000 d CEO 1000 d晨鳥1030 d WORKER 1100看門1100 d MANAGER 1130
的車輛應記錄爲包含許可證和 的到達時間的結構。爲了簡單起見,時間將是代表軍事時間的整數 。包括C++字符串類。
struct Vehicle {string license; //許可值int 到達; //抵達軍事時間(0 - 2359)};閱讀數據文件的行,並重新創建汽車 進出停車場的運動。車輛在入住期間每小時收費8美元,費用爲 。部分時間被四捨五入。您 可以假設只有在該地段的汽車的業主抵達時出發 請求。在日期結束時報告該地段剩餘的所有車輛以及費用總和。在講座中使用討論 的模板堆棧和隊列類。
對於每次到達處理您應該報告:車輛停放在xxxx許可證xxxxxx 或許可證xxxxxx車被拒絕xxxx - 很多已滿!
對於處理您應報告每次出發:汽車與許可 XXXXXX留在XXXX支付$ XX.XX
我在上一部分,當一輛車葉麻煩。我不熟悉堆棧和隊列,但據我瞭解,堆棧是LIFO,隊列是FIFO。
以下是我有:
struct Vehicle
{
char ad; // Arrival departure char
string license; // license value
int arrival; // arrival in military time
};
int main()
{
ifstream fin; // declare input file stream object
fin.open ("lot.txt"); //open data text
stack<string> stack; // STL Stack object
queue<string> q; // STL Queue object
Vehicle v; // Object of struct Vehicle
while(!fin.fail()){
fin >> v.ad >> v.license >> v.arrival;
if (v.ad == 'A' && stack.size() < 5){
stack.push(v.license);
cout << endl << "Car with license " << v.license << " parked at " << v.arrival;
}else if(v.ad == 'A' && stack.size() >= 5){
cout << endl << "Car with license " << v.license << " turned away at " << v.arrival << " - LOT FULL";
}else if(v.ad == 'D'){
string departingcar = v.license;
for(int i=0; i<stack.size(); i++)
//am I on the right track with a for loop?
q.push(v.license);
stack.pop();
q.pop();
if(departingcar != v.license){
stack.push(v.license);
}
}
}
}
return 0;
}
我可以在沒有問題的閱讀車輛,但是當我從堆棧中移走車輛,把它們放在一個隊列裏,然後將其插入回堆疊,我迷路了。
你的教授真的使用像'lol.txt'這樣的名字嗎? –
應該是'lot.txt' – Nick