学校の課題なんですが・・・
学校の課題なんですが・・・
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
★以下の仕様を満たすプログラムをC言語で作成しなさい。
【仕様】座席予約簡易プログラム
▽通路を挟んだ5行×5列(1-1~5-5まで)の座席がある列車の座席を予約・キャンル
するプログラムを作る。
▽メニューは、「予約」「キャンセル」「終了」の3種類とする。
▽空き状態を0、予約済み状態を1で表現する。初期の予約状態はランダムにしておく。
▽「予約」では、予約状況の一覧を表示し、予約する座席数を入力させる。入力数が空席の数以上であれ ば、 「空席が足りません」として、再度入力させる。
▽次に希望する座席を入力させる(行‐列の順)。入力されたら確認メッセージ
(「(座席番号)」を予約しますか?)を表示する。Yesならば予約処理をし、「予約しました」と表示してメニ ューに戻る。 Noならばメニューに戻る。
▽すでに予約済みの座席を指定した時は、「(座席番号)は予約済みです」とエラーメッセージを表示し、再度 入力させる。
▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッセージ を表示)
▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
▽「キャンセル」では、「予約」メニューと同様の機能をもたせる(一覧表示・キャンセルする座席数の入力・
座席番号の入力・確認メッセージ・エラー処理・複数選択機能)
▽「終了」では、プログラム終了する。
全体的に分からないのですが、とりあえず書いてあることをプログラムにしてみました(添付しました)
一覧をランダムにするのはどうしたら良いでしょうか?他のところも教えてほしいです。
ここのところをどうすれば良いか分かりません→▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッセージを表示)
▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
全体的に分からないので教えてください。
[2] 問題文(含コード&リンク):
★以下の仕様を満たすプログラムをC言語で作成しなさい。
【仕様】座席予約簡易プログラム
▽通路を挟んだ5行×5列(1-1~5-5まで)の座席がある列車の座席を予約・キャンル
するプログラムを作る。
▽メニューは、「予約」「キャンセル」「終了」の3種類とする。
▽空き状態を0、予約済み状態を1で表現する。初期の予約状態はランダムにしておく。
▽「予約」では、予約状況の一覧を表示し、予約する座席数を入力させる。入力数が空席の数以上であれ ば、 「空席が足りません」として、再度入力させる。
▽次に希望する座席を入力させる(行‐列の順)。入力されたら確認メッセージ
(「(座席番号)」を予約しますか?)を表示する。Yesならば予約処理をし、「予約しました」と表示してメニ ューに戻る。 Noならばメニューに戻る。
▽すでに予約済みの座席を指定した時は、「(座席番号)は予約済みです」とエラーメッセージを表示し、再度 入力させる。
▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッセージ を表示)
▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
▽「キャンセル」では、「予約」メニューと同様の機能をもたせる(一覧表示・キャンセルする座席数の入力・
座席番号の入力・確認メッセージ・エラー処理・複数選択機能)
▽「終了」では、プログラム終了する。
全体的に分からないのですが、とりあえず書いてあることをプログラムにしてみました(添付しました)
一覧をランダムにするのはどうしたら良いでしょうか?他のところも教えてほしいです。
ここのところをどうすれば良いか分かりません→▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッセージを表示)
▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
全体的に分からないので教えてください。
Re:学校の課題なんですが・・・
素人の私ですが、部分的にですが(汗
>▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
時間がないので、ソースは読んでないのですが
入力数をカウントする変数、空席をカウントする変数なんかを用意して
入力数:NCount
空席数:KCount
入力されるたびに++したりして
>▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
時間がないので、ソースは読んでないのですが
入力数をカウントする変数、空席をカウントする変数なんかを用意して
入力数:NCount
空席数:KCount
入力されるたびに++したりして
if(NCount==KCount){ Printf(表示); }素人のソースなので参考にならないと思いますが・・・
Re:学校の課題なんですが・・・
>printf("空き:0 予約済み:1\n"); > for(j=0; j<=5; j++){ > printf(" %d\t",j); > for(i = 0; i < 5; i++){ > printf(" %d\t",i+1); > > } > printf("\n"); > }質問なんですが上記の処理は、25マスに乱数を入れて
0,1を代入する処理を書きたいと言う解釈で合っていますかね?
こんな感じかな?
#define MAX 5
srand(time(NULL)); for(i=0;i<MAX;++i){ for(j=0;j<MAX;++j){ zaseki[j]=rand()%1;//0~1を代入する } }
もしかすると
randの使い方が間違っているかもしれません。
その時は、ごめんなさい。
Re:学校の課題なんですが・・・
いけやんさん、惜しいです。
> zaseki[j]=rand()%1;//0~1を代入する
は
zaseki[j]=rand()%2;//0~1を代入する
です。
あまりを0か1にしたいのですから1で割ってはあまりは0しかありえません。
なぜなら0以外の整数は1で割り切れちゃいますから^^;
ほかにはビット演算を用いて乱数の演算を減らすやり方も出来ますね。
※hint
32= 00100000
16= 00010000
8= 00001000
4= 00000100
2= 00000010
1= 00000001
です。
乱数で0から31(32で割ったあまり)を取り出し、
2進数に置き換えた各桁を座席に割り当てるやり方。
> zaseki[j]=rand()%1;//0~1を代入する
は
zaseki[j]=rand()%2;//0~1を代入する
です。
あまりを0か1にしたいのですから1で割ってはあまりは0しかありえません。
なぜなら0以外の整数は1で割り切れちゃいますから^^;
ほかにはビット演算を用いて乱数の演算を減らすやり方も出来ますね。
int k; k=rand()%32; for(i=0;i<5;i++){ zaseki[0]=k&16; zaseki[1]=k&8; zaseki[2]=k&4; zaseki[3]=k&2; zaseki[4]=k&1; }
※hint
32= 00100000
16= 00010000
8= 00001000
4= 00000100
2= 00000010
1= 00000001
です。
乱数で0から31(32で割ったあまり)を取り出し、
2進数に置き換えた各桁を座席に割り当てるやり方。
Re:学校の課題なんですが・・・
>やそさん
訂正ありがとうございます。
乱数をあまり使った事がなかったので、助かります。
>ほかにはビット演算を用いて乱数の演算を減らすやり方も出来ますね。
そんなやり方もあるんですか~。
自分はビット演算なんかは、疎いので
少し難しいですね。
>kokoroさん。
間違ったものを書いて、すいませんでした。
訂正ありがとうございます。
乱数をあまり使った事がなかったので、助かります。
>ほかにはビット演算を用いて乱数の演算を減らすやり方も出来ますね。
そんなやり方もあるんですか~。
自分はビット演算なんかは、疎いので
少し難しいですね。
>kokoroさん。
間違ったものを書いて、すいませんでした。
Re:学校の課題なんですが・・・
>ありがとうございます。他にも教えてほしいのですが、誰か教えてください。
全体的にといっても、何がわからないのかわからないと、他の皆さんも 教えずらいと思います。 >▽通路を挟んだ5行×5列(1-1~5-5まで)の座席がある列車の座席 私の理解不足かもしれませんがこの説明がよくわからないんですが・・・ 1 2 3 4 5 A o o o o o B o o o o o C o o o o o D o o o o o E o o o o o こんな席だというイメージで良いんですかね? 私もまだまだ未熟者なので、大した力にはなれませんが、 if(????) { printf("空席が足りません\n"); printf("予約する座席数を入力してください。\n"); scanf("%d",&yoyaku); } ここのif分は 全体の席数 < 現在の予約数+これからする予約の数 ==error になる訳ですよね?今のままだと、errorを出してもう一度scanfでまた、errorがでてしまったら、そのまま次に進んでしまいます。また、終了処理を選択しなくても、勝手に終了してしまうので、 while(1) //無限ループ { scanf(%d,&num); switch(num) { case1: //予約処理 while(1) { errorにならなかったら... break; } break; case2: //キャンセル処理 break; case3: //終了 return 0; } }少しごちゃごちゃしてしまいましたが、こんな感じで良いのではないでしょうか?
Re:学校の課題なんですが・・・
をっと。
乱数はループの中で発生させないといけなかった(汗)
int k;
for(i=0;i<5;i++){
k=rand()%32;
zaseki[0]=k&16;
zaseki[1]=k&8;
zaseki[2]=k&4;
zaseki[3]=k&2;
zaseki[4]=k&1;
}
です。
乱数はループの中で発生させないといけなかった(汗)
int k;
for(i=0;i<5;i++){
k=rand()%32;
zaseki[0]=k&16;
zaseki[1]=k&8;
zaseki[2]=k&4;
zaseki[3]=k&2;
zaseki[4]=k&1;
}
です。
Re:学校の課題なんですが・・・
あ、またミスに気づいた。代入する値は0か1だっけ?
int k;
for(i=0;i<5;i++){
k=rand()%32;
zaseki[0]=((k&16)>>4);
zaseki[1]=((k&8)>>3);
zaseki[2]=((k&4)>>2);
zaseki[3]=((k&2)>>1);
zaseki[4]=k&1;
}
1の位までビットシフトっす。
int k;
for(i=0;i<5;i++){
k=rand()%32;
zaseki[0]=((k&16)>>4);
zaseki[1]=((k&8)>>3);
zaseki[2]=((k&4)>>2);
zaseki[3]=((k&2)>>1);
zaseki[4]=k&1;
}
1の位までビットシフトっす。
Re:学校の課題なんですが・・・
分からないところなんですが・・・
yes,noの判定。
予約済みの座席を指定した時のエラーメッセージ。
入力数が2以上の時は複数選択が可能になるようにする。
入力数が空席の数と同じの時は、すぐに確認メッセージを表示。
のところがうまくプログラムが作れません。教えていただきたいです。
yes,noの判定。
予約済みの座席を指定した時のエラーメッセージ。
入力数が2以上の時は複数選択が可能になるようにする。
入力数が空席の数と同じの時は、すぐに確認メッセージを表示。
のところがうまくプログラムが作れません。教えていただきたいです。
Re:学校の課題なんですが・・・
>>yes,noの判定。
1:yes 2:no
1:yes 2:no
if(res == 1) { //予約 } else { //キャンセル } >>予約済みの座席を指定した時のエラーメッセージ。 if(zaseki[j] != 0) { //予約済みです } #一番最初に配列は0で初期化しておく >>入力数が2以上の時は複数選択が可能になるようにする。 if(yoyaku > 1) { for(roop = 0; roop <=yoyaku; roop++) { //予約処理 } } >>入力数が空席の数と同じの時は、すぐに確認メッセージを表示。 ???何のメッセージかわからないですが… if(yoyaku == aki) { //確認メッセージ } 多分こんな感じでよいのではないでしょうか?
Re:学校の課題なんですが・・・
まず、Haruさんがされているように、全体をWhileかdo~whileで繰り返しましょう。
>yes,noの判定。
kokoroさんの方法でいいと思います。
>予約済みの座席を指定した時のエラーメッセージ。
if(zaseki[i-1][j-1]==1)
printf("エラーメッセージ\n");
のようになりますが、エラーの場合、再入力が必要なので
これもWhileかdo~whileで繰り返しましょう。
>入力数が2以上の時は複数選択が可能になるようにする。
予約座席数を入力した後、
while(yoyaku>0){
座席番号入力
yoyaku--;
aki--;
}
のようにこれも繰り返します。
>入力数が空席の数と同じの時は、すぐに確認メッセージを表示。
上の予約座席数を入力した後、
if(aki==yoyaku)
すべて予約にする
else if(aki>yoyaku)
上の座席番号入力のwhile文
まだわからないのであれば、わかるところまでプログラムを添付してください。
>yes,noの判定。
kokoroさんの方法でいいと思います。
>予約済みの座席を指定した時のエラーメッセージ。
if(zaseki[i-1][j-1]==1)
printf("エラーメッセージ\n");
のようになりますが、エラーの場合、再入力が必要なので
これもWhileかdo~whileで繰り返しましょう。
>入力数が2以上の時は複数選択が可能になるようにする。
予約座席数を入力した後、
while(yoyaku>0){
座席番号入力
yoyaku--;
aki--;
}
のようにこれも繰り返します。
>入力数が空席の数と同じの時は、すぐに確認メッセージを表示。
上の予約座席数を入力した後、
if(aki==yoyaku)
すべて予約にする
else if(aki>yoyaku)
上の座席番号入力のwhile文
まだわからないのであれば、わかるところまでプログラムを添付してください。
Re:学校の課題なんですが・・・
>>予約済みの座席を指定した時のエラーメッセージ。
>if(zaseki[i-1][j-1]==1)
>printf("エラーメッセージ\n");
>のようになりますが、エラーの場合、再入力が必要なので
>これもWhileかdo~whileで繰り返しましょう
失礼しました。nonさんの言うとおりi,jは-1しなくてはいけませんでした。
>if(zaseki[i-1][j-1]==1)
>printf("エラーメッセージ\n");
>のようになりますが、エラーの場合、再入力が必要なので
>これもWhileかdo~whileで繰り返しましょう
失礼しました。nonさんの言うとおりi,jは-1しなくてはいけませんでした。
Re:学校の課題なんですが・・・
まずは処理の流れを文章や図で書き出しましょう。
スタート
↓
初期処理
(使用する変数の宣言や初期値代入など)
↓
メニュー表示
↓
番号入力
(入力した番号が1-3以外のときはメッセージを出してメニュー表示からやり直す?)
↓
入力した番号によって各処理へ
☆予約
現在の予約状況の表示
↓
予約する座席数を入力
↓
現在予約されている座席数と比較
(座席数が足りなければ座席数入力へ戻る)
↓
座席番号の入力
↓
予約状況と比較
(既に予約されている座席の場合は座席番号の入力へ戻る)
↓
予約確認
↓
全ての予約が終わっていれば抜ける。
(終わっていなければ予約数を1減じて、座席番号の入力へ戻る)
☆1☆まずは座席の初期設定(ランダムに0,1を設定する)
位置がずれているようなら調整してください。
☆3☆メニュー番号入力
こんな感じかなぁ・・・
スタート
↓
初期処理
(使用する変数の宣言や初期値代入など)
↓
メニュー表示
↓
番号入力
(入力した番号が1-3以外のときはメッセージを出してメニュー表示からやり直す?)
↓
入力した番号によって各処理へ
☆予約
現在の予約状況の表示
↓
予約する座席数を入力
↓
現在予約されている座席数と比較
(座席数が足りなければ座席数入力へ戻る)
↓
座席番号の入力
↓
予約状況と比較
(既に予約されている座席の場合は座席番号の入力へ戻る)
↓
予約確認
↓
全ての予約が終わっていれば抜ける。
(終わっていなければ予約数を1減じて、座席番号の入力へ戻る)
☆1☆まずは座席の初期設定(ランダムに0,1を設定する)
int reserved;/*予約済み席数を数える変数 reserved=0; for(i=0;i<5;i++){ for(j=0;j<5;j++){ zaseki[j]=rand()%2;/* 2で割った余り(すなわち0か1)を設定 reserved+=zaseki[j]; } } aki=25-reserved;/* ついでに空席数も計算しておく。 ☆2☆予約状況の表示 printf("\t1\t2\t3\t4\t5\n");/* 列の見出し for(i=0;i<5;i++){ printf("%d:\t",i+1);/* 行の見出し for(j=0;j<5;j++){ printf("%d\t",zaseki[j]);/* 予約状況表示 } printf("\n"); }
位置がずれているようなら調整してください。
☆3☆メニュー番号入力
while(1){ scanf("%d",&num); if(num>0 || num<4){ break; } printf("1から3を入力してチョーダイ!!\n"); } ☆4☆予約 while(1){ scanf("%d",&yoyaku); if(yoyaku<=aki){ break; } printf("そんなに予約できましぇーん!!\n"); printf("空席数:%d 以下で入力してねえん\n",aki); } while(yoyaku>0){ printf("希望する座席番号を入力してください(行-列)\n"); scanf("%d-%d",&i,&j); if(zaseki[j]==1){ printf("座席[%d-%d]は予約済みです。\n",i,j); else{ printf("を、空席みたいっすよ旦那。%d-%d取っときやすか?\n",i,j); res=getchar(); if(res=='y' || res='Y'){ zaseki[j]=1; printf("押さえやしたぜ。へっへっへ。\n"); yoyaku--; } } }
こんな感じかなぁ・・・
Re:学校の課題なんですが・・・
遅かった・・・
やそさんが組まれたみたいですね・・・
今自分も一部ですが、組んでいまた。
でも、やそさんの方が断然いいですね(汗
やそさん・・・・・
printfで表示させるところがおもしろすぎですよ!!
>printf("を、空席みたいっすよ旦那。%d-%d取っときやすか?\n",i,j);
>printf("押さえやしたぜ。へっへっへ。\n");
ツボでした。
昼ご飯が詰まりましたwww
脱線しました。すいません。
部分的にですが
Yesの所はそんな感じだと思います。
>Noならばメニューに戻る
これは、メニューの所をwhile等のループで回しておいて
やそさんが組まれたみたいですね・・・
今自分も一部ですが、組んでいまた。
でも、やそさんの方が断然いいですね(汗
やそさん・・・・・
printfで表示させるところがおもしろすぎですよ!!
>printf("を、空席みたいっすよ旦那。%d-%d取っときやすか?\n",i,j);
>printf("押さえやしたぜ。へっへっへ。\n");
ツボでした。
昼ご飯が詰まりましたwww
脱線しました。すいません。
部分的にですが
Yesの所はそんな感じだと思います。
>Noならばメニューに戻る
これは、メニューの所をwhile等のループで回しておいて
省略 if(Yesならば){} if(Noならば){ printf("もう一度予約して下さい"); continue;//ループに戻る }の様な感じでいけるのでは?と思います。
Re:学校の課題なんですが・・・
ここまで作ってみました。
あと、▽入力数(座席数)が2以上のときは複数選択が可能になるようにする
(全ての希望を入力した時点で確認メッセージ を表示)
▽入力数(座席数)が空席の数と同じときは、すぐに予約確認メッセージを表示する。
のところがどうしてもできないのですが、どうしたら良いのでしょう????
あと、▽入力数(座席数)が2以上のときは複数選択が可能になるようにする
(全ての希望を入力した時点で確認メッセージ を表示)
▽入力数(座席数)が空席の数と同じときは、すぐに予約確認メッセージを表示する。
のところがどうしてもできないのですが、どうしたら良いのでしょう????
Re:学校の課題なんですが・・・
ソースは見ておりません。
> あと、▽入力数(座席数)が2以上のときは複数選択が可能になるようにする
> (全ての希望を入力した時点で確認メッセージ を表示)
入力数(座席数)をどういう変数で管理しているか、
複数の座席を選択する、とは、どういう処理を意味するのか、
すべての希望を入力した時点、とは、どういうタイミングのことをいうのか、
確認メッセージの内容はどういったものか。
> ▽入力数(座席数)が空席の数と同じときは、すぐに予約確認メッセージを表示する。
空席の数をどういう変数で管理しているか、
入力数(座席数)と空席数が同じ、ということを、C言語ではどう表現するか、
予約確認メッセージの内容はどういったものか。
考えることはいっぱいありますね。
さあ、頭をフル回転させましょう。
> あと、▽入力数(座席数)が2以上のときは複数選択が可能になるようにする
> (全ての希望を入力した時点で確認メッセージ を表示)
入力数(座席数)をどういう変数で管理しているか、
複数の座席を選択する、とは、どういう処理を意味するのか、
すべての希望を入力した時点、とは、どういうタイミングのことをいうのか、
確認メッセージの内容はどういったものか。
> ▽入力数(座席数)が空席の数と同じときは、すぐに予約確認メッセージを表示する。
空席の数をどういう変数で管理しているか、
入力数(座席数)と空席数が同じ、ということを、C言語ではどう表現するか、
予約確認メッセージの内容はどういったものか。
考えることはいっぱいありますね。
さあ、頭をフル回転させましょう。
Re:学校の課題なんですが・・・
ちょっと遊んでみました。
がんばって気になる(ツンデレ風味の)あの子のスケジュールを押さえるのだ!!(笑)
おふざけが過ぎるかな?
ロジック自体は一応まともに考えてはいるんでお許しを(笑)
目障りならば消してくだされ(削除pass:yaso)
ぽこぽこ修正^^;
がんばって気になる(ツンデレ風味の)あの子のスケジュールを押さえるのだ!!(笑)
#include<stdio.h> #include<stdlib.h> #include<time.h> #define GYOU 5 #define RETU 5 int main(void) { /* 変数の宣言 */ int NUM[RET[/url][GYO[/url]; int i,j,num,zasekisu,aki,res; aki = 0; /* 初期処理 */ /* 乱数 種 決定 */ srand((unsigned)time(NULL)); /* めにゅー */ while(1){ printf("メニュー 1:予約 2:キャンセル 3:終了\n"); printf("早く番号を入れなさいよっ!もう、グズなんだから!!:"); scanf("%d",&num); if(num>0 || num<4){ break; }/* 1から3だけ~。どんだけ~ */ }/* while文の終了 /* どれを選んでも一応現在の予約状況を表示 */ printf("予約一覧\n"); printf("空き:0 予約済み:1\n"); for(i=0; i<RETU; i++){ for(j = 0; j < GYOU; j++){ NUM[j] = rand()%2;/* 0 or 1をセット */ if(NUM[j] == 0){/* 空の数を数える */ aki = aki+1; } printf("%d\t",NUM[j]); } printf("\n");/* 1行の表示後に改行する */ } /* 予約 */ if(num == 1){ /* 予約する日数を入力する */ printf("予約する日数を入力するのよ!\n"); while(1){ scanf("%d",&zasekisu); if(zasekisu<=aki){ break; } printf("私は忙しいのだぞ!おまえの為にそんなにスケジュール空けられるわけあるか馬鹿者が!\n"); printf("予約する日数を空日数:%d 以下に抑えるのだ\n",aki); } /* ▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。 */ if(aki == zasekisu){/* 空席数と予約数が同じ場合は全席予約ってこと? */ printf("現在の空日数を全て予約するのか?(y/n)\n"); res = getchar(); if(res == 'Y' || res == 'y'){ for(i=0; i<RETU; i++){ for(j = 0; j < GYOU; j++){ NUM[j]=1;/* 問答無用で全て1にセット */ } } printf("全席予約しました。\n"); printf("全くどれだけ私にloveloveなのだ。私も罪なオンナだな。ふふふっ。\n"); } } /* ▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッセージを表示) */ /* 座席数を数えながらループする */ while(zasekisu>0){ /* 座席番号妥当性チェック */ printf("希望する日を入力してください。(行‐列)\n"); scanf("%d-%d",&i,&j); while(1){ if((i>0 && i<6)&&(j>0 && j<6)){/* 座席番号は1から5のみ許可 */ break; } printf("もう一度、日付を良く確認するのだ。馬鹿者め。(行‐列)\n"); scanf("%d-%d",&i,&j); } /* 予約済みかどうかの確認 */ if(NUM[i-1][j-1] == 1){ printf("その日[%d-%d]は忙しい。やめておけ。\n",i,j); }else{ printf("その日「%d-%d」で良いのか?(y/n)\n",i,j); printf("Y または Nで簡潔に答えるがいい。\n"); res = getchar(); if(res == 'Y' || res == 'y'){/* nの判定をしていないのでy以外は全てnoとなる */ NUM[j]=1; printf("スケジュール「%d-%d」を押さえました。\n",i,j); zasekisu--;/* 予約完了したので残り予約数(zasekisu)を1減らす */ }/* if(res~)文の終了 */ }/* if(NUM~)文の終了 */ printf("残り予約数:%d\n",zasekisu);/* なんとなく親切設計に */ }/* while(zasekisu~)文の終了 */ /* 予約数全て入力終了 */ printf("全ての予約が完了しました。\n"); }/* if(num == 1)の終了 /* キャンセル */ /*if(num == 2){ /* キャンセルはがんばって考えよう! */ }*/if(num == 2)文の終了 /* 終了 */ if(num == 3){ printf("なに!止めるというのか?!\n"); scanf("%d",&i); printf("ちょ、ちょっと本気か?!\n"); scanf("%d",&i); printf("お前なんかもう知らん。勝手にすればよかろう。\n"); } return 0; }/* mainの終了
おふざけが過ぎるかな?
ロジック自体は一応まともに考えてはいるんでお許しを(笑)
目障りならば消してくだされ(削除pass:yaso)
ぽこぽこ修正^^;
Re:学校の課題なんですが・・・
面白いもの見させていただきましたw
あ、time.hがインクルードされてないようです。
srand(time(NULL));
も警告避けるために
srand((unsigned)time(NULL));
のがいいかなと思います。
・・・ツンデレはいつ頃から流行ったのでしょうねw
あ、time.hがインクルードされてないようです。
srand(time(NULL));
も警告避けるために
srand((unsigned)time(NULL));
のがいいかなと思います。
・・・ツンデレはいつ頃から流行ったのでしょうねw
Re:学校の課題なんですが・・・
あ、あと
if((i>0 && i<6)&&((j>0 && j<6)) ↓ if((i>0 && i<6)&&((j>0 && j<6)))とint akiが二つあります^^;
Re:学校の課題なんですが・・・
kazuoniさん、チェックあんがとさん^^
ツール使わず、脳内コンパイルのみなので、穴はやっぱりポコポコあったね^^;
srandはトピ主さんのソースをまんまコピペしただけで、何も考えてなかった(笑)
ツール使わず、脳内コンパイルのみなので、穴はやっぱりポコポコあったね^^;
srandはトピ主さんのソースをまんまコピペしただけで、何も考えてなかった(笑)
Re:学校の課題なんですが・・・限界です´`
実行結果
予約する座席数を入力してください。
2
-希望する座席番号を入力してください。(行‐列)
1-2
座席番号「1-2」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「1-2」を予約しました。
メニュー 1:予約 2:キャンセル 3:終了
番号を入力してください
と1つ目を予約した後、メニューに戻ってしまいます。
例えば、予約する座席数を「2」と入力した時、1つ目を予約した後2つ目の予約にいくように
繰り返したいのですが
どうしたら良いのか・・・教えてください。
予約する座席数を入力してください。
2
-希望する座席番号を入力してください。(行‐列)
1-2
座席番号「1-2」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「1-2」を予約しました。
メニュー 1:予約 2:キャンセル 3:終了
番号を入力してください
と1つ目を予約した後、メニューに戻ってしまいます。
例えば、予約する座席数を「2」と入力した時、1つ目を予約した後2つ目の予約にいくように
繰り返したいのですが
どうしたら良いのか・・・教えてください。
Re:学校の課題なんですが・・・限界です´`
↑のはできました。
もう一つ質問なんですが、
予約が完了した後メニューに戻り、その後また予約を選択した後
一覧表が表示された時、前に予約した番号が一覧表に表示されるようにしたい
(ランダムにならずに、予約したところに「1」が出るようにしたい。)
のですがどうしたらいいのでしょうか?
ソースは一緒です。教えてください。
もう一つ質問なんですが、
予約が完了した後メニューに戻り、その後また予約を選択した後
一覧表が表示された時、前に予約した番号が一覧表に表示されるようにしたい
(ランダムにならずに、予約したところに「1」が出るようにしたい。)
のですがどうしたらいいのでしょうか?
ソースは一緒です。教えてください。
Re:学校の課題なんですが・・・限界です´`
if(aki == zasekisu){ printf("予約しますか。\n",i,j); printf("Yes=1 または No=0を入力してください。\n"); scanf("%d",&res); if(res == 1){ NUM[j]=1; printf("予約しました。\n"); break; }else{ continue; } }
>予約する座席数を入力してください。
>2
↑を入れているのが
>zasekisu
この変数なんですよね?
予約したい座席数をzasekisuが持っているから zasekisuまで回れとして for(~; < zasekisu;~){//予約する座席分るーぷ if(res == 1){ NUM[j]=1; printf("予約しました。\n"); break; } }
こんな感じですかね?
後ここおかしくないですか?
if(aki == zasekisu){
空いてる座席数と予約したい座席数が同じならという事ですよね?
if(aki >= zasekisu){
空いてる数の方が多い場合でないといけないと思うのですが・・・
Re:学校の課題なんですが・・・限界です´`
実行結果
メニュー 1:予約 2:キャンセル 3:終了
番号を入力してください1
一覧表示
空き:0 予約済み:1
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
1 1 0 0 0
1 1 1 0 1
予約する座席数を入力してください。
3
-希望する座席番号を入力してください。(行‐列)
4-3
座席番号「4-3」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「4-3」を予約しました。
-希望する座席番号を入力してください。(行‐列)
4-4
座席番号「4-4」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「4-4」を予約しました。
-希望する座席番号を入力してください。(行‐列)
4-5
座席番号「4-5」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「4-5」を予約しました。
メニュー 1:予約 2:キャンセル 3:終了
番号を入力してください 1
一覧表示
空き:0 予約済み:1
0 0 0 1 0
0 1 0 0 1 この一覧が
0 0 0 0 0 ←ランダムにならずに前に予約した
0 0 0 1 1 ところが予約されているようにしたい。
1 0 0 0 0
(ランダムにならずに、予約したところに「1」が出るようにしたい。)
このようにするにはどうしたら良いのでしょうか?
メニュー 1:予約 2:キャンセル 3:終了
番号を入力してください1
一覧表示
空き:0 予約済み:1
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
1 1 0 0 0
1 1 1 0 1
予約する座席数を入力してください。
3
-希望する座席番号を入力してください。(行‐列)
4-3
座席番号「4-3」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「4-3」を予約しました。
-希望する座席番号を入力してください。(行‐列)
4-4
座席番号「4-4」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「4-4」を予約しました。
-希望する座席番号を入力してください。(行‐列)
4-5
座席番号「4-5」を予約しますか。
Yes=1 または No=0を入力してください。
1
座席番号「4-5」を予約しました。
メニュー 1:予約 2:キャンセル 3:終了
番号を入力してください 1
一覧表示
空き:0 予約済み:1
0 0 0 1 0
0 1 0 0 1 この一覧が
0 0 0 0 0 ←ランダムにならずに前に予約した
0 0 0 1 1 ところが予約されているようにしたい。
1 0 0 0 0
(ランダムにならずに、予約したところに「1」が出るようにしたい。)
このようにするにはどうしたら良いのでしょうか?
Re:学校の課題なんですが・・・限界です´`
ありゃありゃ、上はへんな投稿文書に・・・(失礼しました)
kokoroさんのプログラムもほぼ、完成したみたいなので、ちょっと作ってみました。
上の添付ファイルです。
参考にしてください。ただし、学校に提出するのは自分のにしてね。
なお、配列とakiは簡単にするためにグローバル変数にしました。
kokoroさんのプログラムもほぼ、完成したみたいなので、ちょっと作ってみました。
上の添付ファイルです。
参考にしてください。ただし、学校に提出するのは自分のにしてね。
なお、配列とakiは簡単にするためにグローバル変数にしました。
Re:学校の課題なんですが・・・
質問なんですが、全部予約して、一覧表示させると全部予約(全部「1」)にならない
のはなぜでしょうか。
また、全てキャンセルして、一覧表示すると全部「0」になりません。
教えてください。
のはなぜでしょうか。
また、全てキャンセルして、一覧表示すると全部「0」になりません。
教えてください。
Re:学校の課題なんですが・・・
for(i=1; i<5; i++){ for(j=1; j<5; j++){ NUM[i-1][j-1]=0; // ここ間違い } } yoyakuzumi = 0; aki = 25; printf("キャンセルしました。\n");なぜ-1していますか?
Re:学校の課題なんですが・・・
if(res == 1){ for(i=1; i<5; i++){ for(j=1; j<5; j++){ NUM[i-1][j-1]=1; } } yoyakuzumi = 25; aki = 0; printf("予約しました。\n"); }試せる環境がないので、多分なんですが
ループを1から始めて5までとしているので
1,2,3,4までしか回っていないのではないのでしょうか?
もしあれでしたら
printf()なんかを挟んで
値を確かめては?
for(i=1; i<5; i++){ printf(値確認) for(j=1; j<5; j++){ printf("値確認") NUM[i-1][j-1]=1;