1

私はサービスキューをシミュレートすることを要求するC++の演習に取り組んでおり、それは丸い1次元配列でそれを行うように要求します。したがって、顧客がキューに名前を挿入するときに、カードの番号を要求します。キュー内の到着時間。

だから私の最初の質問は、配列の1つの位置にこれらすべての要素を入力するにはどうすればよいですか?アレイのすべての情報を1つの位置に挿入する必要があります。ラウンドキューから要素を挿入または抽出する方法の条件はすでに知っていますが、多くの要素に対してそれを行う方法がわかりません。

次に、顧客が待機している時間に応じて、顧客がキューで待機しなければならない時間を印刷するように求められます(ただし、正確すぎる必要はありません)。

4

2 に答える 2

1

最初の質問: データのコレクションを表すクラスまたは構造体を作成し、その構造体全体をコンテナーに入れることができますか?

(編集: Customer はクラスになり、コンストラクターが追加されました。インスタンス化の例が追加されました) これを少しクリーンアップする必要がありますが、次のようになります。

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

2 番目の質問については、時間を永続化する必要がなく、違いだけを処理する必要がある場合、1 つの解決策はclockを使用することです。時差(ティック単位)を取り、秒に変換する必要がある場合は、CLOCKS_PER_SECOND で割ることを忘れないでください。

于 2012-11-01T18:56:04.087 に答える
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
于 2012-11-01T19:59:59.083 に答える