我有一份功课。我试着解决它,但我需要一些帮助......
124ate
[6个字符长]并且名称如下所示Superpan
和生产年份作为整数变量。在您的程序中,您不应该显式调用Queue ADT,而是使用全局函数来调用它们(隐式)。我的回答:
#include <iostream>
#include "queue.h"
#include <string>
using namespace std ;
struct car {
char ID[6];
int year;
string name;
}
int main ()
{
int num;
car car1;
Queue <car> q1;
do {
cout << "mniu \n"
<< "1. Park new car \n"
<< "2. Print the number of cars \n"
<< "3. move earliest coming car \n"
<< "4. Print All cars \n"
<< "5. exit \n";
cin >> num;
switch (num)
{
case 1:
int n;
cout << "enter id:\n";
cin >> car1.ID;
cout << "enter name:\n";
cin >> car1.name;
cout << "enter year:\n";
cin >> car1.year;
q1.enqueue (car1);
break;
case 2:
cout << "number of cars: " << q1.queueCount();
break;
case 3:
q1.dequeue(car1);
break;
case 4:
while (q1.queueCount()!=0)
cout << q1.front();
case 5:
cout << "Thank you /n End program";
break;
default:
cout << "failed number. chose from 1 to 5 \n";
}
}
while (num==5);
return 0;
}
我的问题:
答案 0 :(得分:0)
修改强>
1
car first = q1.dequeue();
q1.enqueue(first);
//ADD HERE: print first...
while (q1.peek() != first) {
car element = q1.dequeue();
q1.enqueue(first);
//ADD HERE: print element...
}
添加您的打印,其中的评论“ADD HERE:...”
2。你应该添加像getUserInput()和printQueue()这样的函数来处理所有这些场景,主要只是调用这些函数
答案 1 :(得分:0)
“你的主程序应该只有声明和调用全局函数,”
我相信你的导师会鼓励你将你的代码划分为单独的子程序,每个子程序只做一件事。在这种风格中,典型的main
可能是:
int main() {
MyDataStruct x;
ReadInput(x);
ProcessData(x);
WriteOutput(x);
}
请注意for
中没有main
个循环,没有累加销售和副作用的税收表达式,主要不需要任何处理。所有好的东西都在你的全局函数或数据结构的方法中。
将其应用到您的程序中,您的主文件可能如下所示:
int globalExitFlag;
int main() {
Queue<car> q;
Car c;
while( !globalExitFlag ) {
int cmd;
cmd = PrintMenuAndAcceptOneAnswer(q, c);
DoOneCommand(q, c, cmd);
}
}
然后,您可以将cin
阅读的内容放在PrintMenuAndAcceptOneAnswer
中,同时打印和队列操作位于DoOneCommand
。当然,您必须自己编写PrintMenuAndAcceptOneAnswer
和DoOneCommand
。我会进一步细分这些子例程 - 例如,DoOneCommand
应该调用DoPrintAllCars
,DoExit
,DoParkOneCar
等。
最后,我确实在while
中加了main()
,我认为这是合适的。注意全局变量。我假设当你处理“退出”命令时,你将设置该变量以指示处理应该结束。