このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 145代目 #497 # [1] 授業単元:C演習 # [2] 問題文(含コード&リンク): # # バス停Aからバスに乗り、B駅まで行きたい。 # 時刻(時・分)を入力し、その時刻までにB駅に着くためには、何時何分発のバスに乗ればいいかを表示するプログラムを作成しなさい。 # バス停AからB駅までの乗車時間は22分とする。 # バス停Aの時刻表は # 6時(25分、37分、59分) 7時(9分、19分、29分、39分) 8時(56分) # 9時から15時までそれぞれ36分と56分 16時(36分) 18時(21分)  # # バス停Aの時刻表(6,25). バス停Aの時刻表(6,37). バス停Aの時刻表(6,59). バス停Aの時刻表(7,9). バス停Aの時刻表(7,19). バス停Aの時刻表(7,29). バス停Aの時刻表(7,39). バス停Aの時刻表(8,56). バス停Aの時刻表(_時,36) :- between(9,15,_時). バス停Aの時刻表(_時,56) :- between(9,15,_時). バス停Aの時刻表(16,36). バス停Aの時刻表(18,21). 'バス停Aからバスに乗り、B駅まで行きたい。時刻(時・分)を入力し、その時刻までにB駅に着くためには、何時何分発のバスに乗ればいいかを表示する。バス停AからB駅までの乗車時間は22分とする。' :- '時刻(時・分)を入力し'(_時,_分), 'その時刻までにB駅に着くためには、何時何分発のバスに乗ればいいかを'(_時,_分,_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分), 表示する(_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分). 'その時刻までにB駅に着くためには、何時何分発のバスに乗ればいいかを'(_時,_分,_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分) :- 出発時刻上限はこれより少なくとも22分前(_時,_分,_出発時刻上限の時,_出発時刻上限の分), バス停Aの時刻表で出発時刻上限より早い出発時刻ならびの最大値(_出発時刻上限の時,_出発時刻上限の分,_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分). バス停Aの時刻表で出発時刻上限より早い出発時刻ならびの最大値(_出発時刻上限の時,_出発時刻上限の分,_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分) :- findall([_出発時,_出発分],バス停Aの時刻表で出発時刻上限より早い出発時刻(_出発時刻上限の時,_出発時刻上限の分,_出発時,_出発分),_バス停Aの時刻表で出発時刻上限より早い出発時刻ならび), last(_バス停Aの時刻表で出発時刻上限より早い出発時刻ならび,[_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分]). 出発時刻上限はこれより少なくとも22分前(_時,_分,_出発時刻上限の時,_出発時刻上限の分) :- _分 >= 22, _時 = _出発時刻上限の時, _出発時刻上限の分 is _分 - 22,!. 出発時刻上限はこれより少なくとも22分前(_時,_分,_出発時刻上限の時,_出発時刻上限の分) :- _分 < 22, _出発時刻上限の時 is _時 - 1, _出発時刻上限の分 is 60 + _分 - 22,!. バス停Aの時刻表で出発時刻上限より早い出発時刻(_出発時刻上限の時,_出発時刻上限の分,_出発時,_出発分) :- バス停Aの時刻表(_出発時,_出発分), _出発時 < _出発時刻上限の時. バス停Aの時刻表で出発時刻上限より早い出発時刻(_出発時刻上限の時,_出発時刻上限の分,_出発時,_出発分) :- バス停Aの時刻表(_出発時,_出発分), _出発時 = _出発時刻上限の時, _出発分 =< _出発時刻上限の分. '時刻(時・分)を入力し'(_時,_分) :- 整数入力('時 : ',between(0,23,_時),_時), 整数入力('分 : ',between(0,59,_分),_分). 整数入力(_催促表示文字列,_制約,_整数) :- writef('%w',[_催促表示文字列]), 整数入力(_整数), call(_制約). 整数入力(_整数) :- read_line_to_codes(current_input,Codes), number_codes(_整数,Codes), integer(_整数). 表示する(_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分) :- writef('%w時%w分\n',[_最も待ち時間の短い出発時,_最も待ち時間の少ない出発分]).