gpt4 book ai didi

c++ - 在 C++ 中排队 ..homework

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:36 28 4
gpt4 key购买 nike

我有作业。我尝试解决它,但我需要一些帮助..

  1. 使用队列 ADT,不要更改 ADT 的任何功能或过程。您必须创建一个结构车,代表将在车站等待队列中的汽车,以便清洗车身。每辆车都有它的 ID,看起来像 124ate [6 个字符长] 和名称,例如Superpan 和生产年份作为整型变量。在您的程序中,您不应显式调用 Queue ADT,而应使用全局函数(隐式)调用它们。
  2. 你的主程序应该只有全局函数的声明和调用,不应使用任何结构。
  3. 您的输出首先应该如下所示:
    1. 停放新车
    2. 打印汽车数量
    3. 移动最早来的车
    4. 打印所有汽车
    5. 退出

我的回答:

#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;

}

我的问题:

  1. 如何在不删除队列的情况下逐个打印队列?
  2. “你的主程序应该只声明和调用全局函数,不应使用任何结构。”这是否意味着我的代码是错误的,因为我将所有内容都写在 main.. 我不明白。

最佳答案

  1. 这是一个队列,因此您可以将第一个节点保存在其中,然后打印每个元素,将其删除并将其推回队列,直到您看到(第二次!)第一个元素。
  2. 是的,您不应该将所有程序都写在 main 中,而应该使用按某种逻辑意义组织的函数和其他文件。

编辑:

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() 这样的函数来处理所有这些场景,main 只会调用这些函数

关于c++ - 在 C++ 中排队 ..homework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5420831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com