座席予約プログラム
▽5行×5列(1-1~5-5まで)の座席があるバスの座席を予約をするプログラムを作る。
▽空き状態を0、予約済み状態を1で表現する。
▽「予約」は、予約状況の一覧を表示し、予約する座席の第一希望と第二希望を入力させる。第二希望は入力しなくてもよい。
▽すでに予約済みの座席を指定した時は、「(座席番号)は予約済みです」とエラーメッセージを表示し、再度入力させる。しかし、先に座席予 約をした人が第二希望を入力していてその座席が開いていた場合座席を入れ替える。
▽入力数が2以上のときは複数選択が可能になるようにする。
▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
第二希望の入力の有無と座席の入れ替えが分りません。アドバイスお願いします。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define GYOU 5
#define RETU 5
int main(void)
{
int NUM[RETU][GYOU];
int i,j,zasekisu,aki;
aki = 0;
srand((unsigned)time(NULL));
printf("予約一覧\n");
printf("空き:0 予約済み:1\n");
for(i=0; i<RETU; i++){
for(j = 0; j < GYOU; j++){
NUM[i][j] = rand()%2;/* 0 or 1をセット */
if(NUM[i][j] == 0)/* 空の数を数える */
{
aki = aki+1;
}
printf("%d\t",NUM[i][j]);
}
printf("\n");/* 1行の表示後に改行する */
}
printf("予約する座席数を入力してください\n");
while(1){
scanf("%d",&zasekisu);
if(zasekisu<=aki){
break;
}
printf("空席が足りません\n");
printf("予約する座席数を空席数:%d 以下に抑えてください\n",aki);
}
if(aki == zasekisu){
{
for(i=0; i<RETU; i++){
for(j = 0; j < GYOU; j++){
NUM[i][j]=1;/* 全て1にセット */
}
}
printf("全席予約しました。\n");
}
}
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("座席番号は1から5で入力してください。(行‐列)\n");
scanf("%d-%d",&i,&j);
}
if(NUM[i-1][j-1] == 1){
printf("その席[%d-%d]は空いていません。\n",i,j);
printf("他の希望する座席を入力してください。(行‐列)\n");
scanf("%d-%d",&i,&j);
}
printf("座席「%d-%d」を押さえました。\n",i,j);
zasekisu--;
printf("残り予約数:%d\n",zasekisu);
}
printf("全ての予約が完了しました。\n");
return 0;
}