C言語でスーパーのレジ処理を行うプログラムの実装方法

このQ&Aのポイント
  • C言語でスーパーのレジ処理を行う場合、顧客の処理順序やレジの開閉時間などを考慮する必要があります。
  • 顧客の処理時間や到着時間を入力し、処理の終了時間や処理したレジの番号を出力するプログラムを作成します。
  • 複数の顧客が並んでいる状態でレジが閉まった場合、処理中の顧客以外は別の列に並びます。また、顧客は列の長さやレジの番号の優先順位に従って並びます。
回答を見る
  • ベストアンサー

c言語

スーパーのレジがあるとします。 そこに客が並びます。その客の会計が終わったら列から抜けて次に並んでいる客の処理をします。 レジは途中で開き、閉まることがあります。 input --------- 2 Akira 3 9 Yoko 4 12 Takumi 6 20 Kouta 9 18 # 11 1 Miku 18 22 @ 22 1 Daiki 23 10 ---------------- これはファイルinput.txtの内容で、読み込みます。 最初にレジの台数を入力します。 名前の後空白で区切ってレジに到着した時間その後にまた空白で区切って処理の終了時間 # 11 1 はレジが閉まる時間でこの場合は0番目、1番目のレジがある中で11の時間に1番目のレジが閉まるということです。 @ 22 1 は22の時間に1番目のレジが開くということです。 2人以上がレジに並んでいる時にレジが閉まったら処理中の客以外は開いているレジに並びます。 客はレジに並んでいる人数が少ない列に優先的に並びます。もし同じ人数が並んでいたら数字が若いレジが優先です(0番目から) --------------------- output Akira 12 0 Yoko 16 1 Takumi 32 0 Daiki 33 1 Kouta 50 0 Miku 72 0 ------------------ outputもファイルで行います。 処理の終了した順に名前と処理時間、処理したレジの番号を出力します。 並んでいる時にレジが閉まったら他の列に並びなすコードがわからないです。 あと、他におかしいところがあったら指摘お願いします。 コードが長いのでこちらから見ていただければ幸いです ```c https://hackmd.io/@I85z6XPYS4e-Pjfg9AoVKQ/SkLL8Ip4j ```

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>コードが長いのでこちらから見ていただければ幸いです >```c >https://hackmd.io/@I85z6XPYS4e-Pjfg9AoVKQ/SkLL8Ip4j これ、403エラーが出てるので、PRIVATEになっていると 思われます。PUBLICにしないと、見れませんよ。 >並んでいる時にレジが閉まったら他の列に並びなすコードがわからないです。 単に、ループで回して、「空いている」物をさがして、 しまってる方を-1、空いている方を+1するだけでOKかと。 しかし、レジが3台だったらどうします。 1台目 5人並んでいたが「閉まった」 2台目 今、2人と仮定 3台目 今、3人と仮定 これをどうするかです。 要件定義としては、 1台目-5、2台目に+5でも正しいですし。 1台目-5、2台目に+3、3台目+2でも正しいですし。 これらについてどうするかの指定が含まれていない気がします。

関連するQ&A

  • c言語

    スーパーのレジがあるとします。 そこに客が並びます。その客の会計が終わったら列から抜けて次に並んでいる客の処理をします。 レジは途中で開き、閉まることがあります。 input --------- 2 Akira 3 9 Yoko 4 12 Takumi 6 20 Kouta 9 18 # 11 1 Miku 18 22 @ 22 1 Daiki 23 10 ---------------- これはファイルinput.txtの内容で、読み込みます。 最初にレジの台数を入力します。 名前の後空白で区切ってレジに到着した時間その後にまた空白で区切って処理の終了時間 # 11 1 はレジが閉まる時間でこの場合は0番目、1番目のレジがある中で11の時間に1番目のレジが閉まるということです。 @ 22 1 は22の時間に1番目のレジが開くということです。 2人以上がレジに並んでいる時にレジが閉まったら処理中の客以外は開いているレジに並びます。 客はレジに並んでいる人数が少ない列に優先的に並びます。もし同じ人数が並んでいたら数字が若いレジが優先です(0番目から) --------------------- output Akira 12 0 Yoko 16 1 Takumi 32 0 Daiki 33 1 Kouta 50 0 Miku 72 0 ------------------ outputもファイルで行います。 処理の終了した順に名前と処理時間、処理したレジの番号を出力します。 このコードを教えてもらえないでしょうか。 #define MAX_QUEUE_SIZE 10 int global_clock; typedef struct Customer { char id[20]; // 客 id int arr_time; // 客が銀行に着く時間 int ser_time; // 客の処理にかかる時間 }Customer; typedef struct TellerQueue { int status; // status, 0: close, 1:お客様が一人しか残っていない状態、つまりCLOSE, 2:open int front; // front pointer,最初の要素elementへのインデックスindex int rear; // rear pointer,最後の要素elementの次のインデックスindexを指す int count; // queue 待ち行列の人数 int current_served_time; // 現在、お客様との取引に費やしている時間 Customer queue[MAX_QUEUE_SIZE]; // 配列形式の円形待ち行列のシミュレーション。 }TellerQueue; これらの構造体が最初に与えられています。

  • 学校で、C言語でのプログラミングをせよ。

    学校で、C言語でのプログラミングをせよ。 との課題が出たのですが、プログラミングが全くわからなくて困っています!! 誰か助けて下さい!! 待ち行列 ・レジ到着は一時間あたり平均20人。 ・客は一番待ち人数の少ないレジに並ぶ。 ・待ち人数の同じレジが二つ以上ある場合は等確率でその内の一つをランダムに選択。 ・客一人あたりの勘定時間は平均値10分の指数分布 ・一つの勘定台には最長平均5分までしか客を待たせられない レジの必要数の推定と客の平均待ち時間およびレジの平均空き時間を推定せよ。 ともありますが、さっぱりです…。

    • ベストアンサー
    • Java
  • ドラッグストアのバイトのマニュアル

    あるコンビニのマニュアルには、列に割り込んできたお客さんへの対処法がありません。 ドラッグストアでは、聞いたところ、どうやらあるようですが、どのようなものなのでしょうか? 例えば、列ができていて、1番目のお客さんのお買い物を済ました後、2番目のお客さんより3番目のお客さんのほうが先にレジにかごを置きにきたとします。 私にはお断りする方法が思い浮かびません。 3番目のお客さんのレジ打ちをお断りして、2番目のお客さんのレジを打つ方法を教えてください。 このとき、定員は私一人だとします。

  • コンビニのレジの順番について(長文です)

    こんにちわ。 私はコンビニでバイトをしているのですが、店員として少し気になっていることがあるので質問させていただきます。 私の店はお客さんの出入りが激しく、お昼などは結構な行列ができることが多々あります。 お店自体も広く、レジは4台あります。 いつもレジは店員2名で対応しているのですが、混んでくると入口に近いレジ2台も開けて並んでいるお客様をお呼びします。 しかしお店が広いので後ろの方まで声が聞こえづらかったり、レジの間に肉まんの什器などがあって並んでいるお客様から奥のレジに店員がいるのが見えにくく、なかなか並んでいるお客様がこっちのレジまで来てくれない時があります。 2番目に並んでいるお客様は自分の前のレジで済ませたほうが早いのでなかなか来てくれず、そのためかそれ以降のお客様が先に行っていいのか迷っている風でもあります。 そういう時に入口からちょうど入ってきたお客様が私のレジに並ぶとします。 その光景を見て、すでに並んでいるお客様はどう思っているんでしょう?? やっぱりむかつきますか?それとも「あっちのレジも開いてるのか、じゃあ行こう」って思うだけですか?? あと、時々並び方の問題で1列なんだか2列なんだかわからない状態になった時、お客様同士が順番で少し揉めてしまい、その後に店員の私たちにすごい怒ってくるお客様もいるのですが、そういうときはどうしたらいいのでしょうか? 普段は「1列にお並びください」と言っていたりしますが、列は急に乱れたりしますし、忙しすぎる時はどっちが先だったかなんて全部は覚えていられません。 それより待たせないようにすることに必死です。 怒られたときは素直にスイマセンと謝りますが、正直私としてはそれは店員が列の並び順にまで細かくどうこう指図することではなく、お客様同士の問題というか譲り合い(?)で解決するようなことだと思っているのですが、こんな考え方は間違ってるでしょうか? 今までレジの列に並んでイヤな思いをされた方や、こうしてくれればいいのに!と思ったことがある方のご意見が聞きたいです。 あと、そういう時にどういう対応をされるとその不満も解消されますか?? 自分としては並んでいたお客様には「お待たせしました!」と必ず一言言ってからレジをするように接客態度には気を付けているんですが・・・。 ご意見お待ちしています。

  • クレーム処理の経験がある方、このような場合、どうします?

    クレーム処理の経験がある方、このような場合、どうします? この間、経験した不愉快な経験です。 複数のレジに待ち行列があり、新たにレジがオープンしそうだったので、そのレジに並んだら、レジ係りが、列に並んでください、と言うので、隣のレジの最後尾に並んだら、そのレジ係りが私の列の2番目のカゴを持って、新しいレジをオープンしました。そのとたん、私より後から来た人たちがそのレジに並びました。 次の日、そのことをクレームして、せめて、隣の2番目の次が終わったらとか言って、オープンするレジで会計してくれてもいいのでは、と言ったところ、クレーム処理の店員が今さら言われても、とか、状況がよくわからないとか、のらりくらり。もう一人現れて、そのとき言ってくれないと、今頃言われても、こちらとしては、謝るしかない、と言うので、それじゃ、謝ってください、と言ったところ、深々と頭を下げて、申し訳ありません、とのこと。逆にこちらの神経を逆なで!謝るなら、最初に謝れ! 正直、クレームするこちらとしても、それほどいい気持ちではない。他にも不快な気持ちになる人がいたらと思い、クレームしたつもりだった。しかし、人を馬鹿にしたような態度はどう思います? 腹が立ったので、これからはその場で、「人を馬鹿にしてるのか」と言うことにします、と言って帰りました。 ちなみに私が想定していた対応は「このたびは、不快な思いさせて申し訳ありませんでした。お客様のお気持ちもわかりますので、今後は、社員教育を徹底いたしますので、今回はお許しいただきたいと思います。」とか?クレーム処理の経験がある方は、どう対応します?

  • 学校課題のプログラミングにとても悩まされています…。

    学校課題のプログラミングにとても悩まされています…。 学校でC言語でプログラミングせよ。 との課題が出たのですが、プログラミングが全くわからなくて困っています!! お願いします!!誰か助けて下さい!! 待ち行列 ・レジ到着は一時間あたり平均20人。 ・客は一番待ち人数の少ないレジに並ぶ。 ・待ち人数の同じレジが二つ以上ある場合は等確率でその内の一つをランダムに選択。 ・客一人あたりの勘定時間は平均値10分の指数分布 ・一つの勘定台には最長平均5分までしか客を待たせられない レジの必要数の推定と客の平均待ち時間およびレジの平均空き時間を推定せよ。 ともありますが、さっぱりです…。

  • レジでの振る舞い

    先日、レジで長い列に並んでいたら、店員が2番目のお客さんからどうぞ、と2番目のレジを開けました。私は3番目に居たのでそのまま立っていたら、2番目の30代とおぼしき小太りのお兄さんは、無言で私に、(自分はこのレジで払うから)向こうのレジに並べ、と私に指で指図しました。これは、非常に無礼な仕草ではないでしょうか? どうせ、指図するなら、軽く会釈して、お先にどうぞ、という感じでジェスチャーで示すならまだしも、取り方によったら、人を下でに見ているようにも受けとれます。ただ、そのお兄さんも、とっさにそのようなジェスチャーをとってしまったかもしれませんが、男性の方、どう思うでしょうか?

  • ある列をキーにして、複数行を1列で出力したい

    AWKで、以下の処理をしたいです。 ・1列目をキーにしたテーブルを作る ・1列目共通で2列目が複数ある場合は、並べて記載したい。 どなたか、スクリプト案お願いします。 例 Input file A あ B あ B い C い Output file A あ B あ/い C い

  • 待ち行列の問題がわかりません、よろしくお願いします

    学校から待ち行列の問題が出たのですがさっぱりわからないのでどなたかわかる方よろしくお願いします。 あるスーパーに一台のレジがあり、客が代金を支払う為にレジで行列を作っている。買い物を終えレジにくる客は、ポアソン到着とし、平均到着時間間隔は60秒と20秒の場合の2通りを考える。なお、レジにおける代金支払いの所要時間を平均45秒の指数分布であるとする。平均到着時間間隔が60秒の場合と20秒の場合のそれぞれについて次の問に答えよ。 注意:単位を忘れない事、計算が出来ない場合は計算不可と記載する事 (1)客が待つ確立 (2)客が待たされない確率 (3)待っている客の人数(待ち行列の長さ)の期待値 (4)待っている客の人数とレジにてサービスを受けている客の合計人数の期待値 (5)待ち時間の期待値 (6)レジに着いてから代金を支払い出ていくまでの所用時間の期待値 さらにはレジを2台体制にした時についても答えよ。 とゆう問題です。 学校から配られたプリントを参考にしてもさっぱりとゆう感じで。 どなたかお願いします。

  • MFCで待ち行列を作っています

    MFC初心者なので、まずは列とレジを作り、キューのように客が順番に通過していくというものを作りたいと思っております。 しかし関数などが膨大すぎて何を使って良いのやら・・・ とりあえず後ろの客が前の客を抜かさない、客がレジに到着したら止まって再び進む(止まる時間はできればランダム)、列に並ぶ客も勝手に増えていく(増え方もできればランダム)、レジを通りすぎた客は消える。 この動作をするのに便利な関数など、また、その使い方をご存知の方、またもっと別の簡単な方法をご存知の方は是非回答をお願いいたします。

専門家に質問してみよう