C言語による自動改札機の開閉の判断です。
切符の組み合わせから、自動改札機の扉の開閉を判断するプログラムです。
・問題
新幹線に乗るためには、「乗車券」「特急券」の2枚の切符が必要です。
経路の一部で新幹線を利用しない場合があるため、これらは別々の切符となっていますが、新幹線のみを利用する経路では、1枚で乗車券と特急券を兼ねる「乗車・特急券」が発行されることもあります。
自動改札機では、これらの切符を読み込んで、正しい切符が投入されたときだけゲートを開けなければなりません。
「乗車券」と「特急券」それぞれ1枚、または、その両方、または、「乗車・特急券」が1枚投入されたかどうかを判定し、自動改札機の扉の開閉を判断するプログラムを作成して下さい。
・入力される値
入力は以下の形式で与えられる。
b1 b2 b3
入力は1行からなり、1つの空白で区切られた3つの整数を含む。
b1 は「乗車券」の投入状態、b2 は「特急券」の投入状態、b3 は「乗車・特急券」の投入状態を示す。
投入状態は0または1で表され、0の場合は投入されていない状態、1の場合は投入されている状態を表す。
ただし、想定される投入状態の組み合わせは以下の場合のみとする。
入力 | 投入状態 | 投入に対する扉の動作 |
---|---|---|
1 0 0 | 「乗車券」のみ投入 | Close |
0 1 0 | 「特急券」のみ投入 | Close |
1 1 0 | 「乗車券」と「特急券」投入 | Open |
0 0 1 | 「乗車・特急券」投入 | Open |
0 0 0 | 投入なし | Close |
・期待する出力
自動改札機の開閉を表すOpenまたはCloseを1行に出力する。
僕が作成、提出したコードは、以下のとおりです。
/* Problem Set from Volume2 0257 : Railway Ticket http://judge.u-aizu.ac.jp/ C言語による自動改札機の開閉の判断 https://neguse-atama.hatenablog.com */ #include<stdio.h> int main(void){ int b1,b2,b3; scanf("%d %d %d",&b1,&b2,&b3); if(b1==0 && b2==0 && b3==0){ printf("Close\n"); }else if(b1==1 && b2==0 && b3==0){ printf("Close\n"); }else if(b1==0 && b2==1 && b3==0){ printf("Close\n"); }else if(b1==0 && b2==0 && b3==1){ printf("Open\n"); }else if(b1==1 && b2==1 && b3==0){ printf("Open\n"); } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Problem Set from Volume2 0257 : Railway Ticket