このディレクトリの索引

# 出典 :: #735 # [1] 授業単元:プログラミング演習 # [2] 問題文: #   http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10239.txt # # 3. # 24時制の時間、分、秒をキーボードから入力させ、秒数に変換して画面に出力するプログラムを # 作成しなさい。(以下の実行結果を参照のこと)。その際、時間、分、秒を引数として秒数を求める # 関数clac_second()を作成、利用すること(clac second()では画面表示不可とする。) # なお、この関数は、不正な時間、分、秒が渡された際、エラーとして-1を返すこととする。 # # 時間(0〜23)を入力してください:96↓ # 分(0〜59)を入力してください:36↓ # 秒(0〜59)を入力してください:13↓ # 不正な時間、分、または秒が入力されました # $ # 時間(0〜23)を入力してください:16↓ # 分(0〜59)を入力してください:36↓ # 秒(0〜59)を入力してください:13↓ # 不正な時間、分、または秒が入力されました # 16時間36分13秒は59773秒です。 '24時制の時間、分、秒をキーボードから入力させ、秒数に変換して画面に出力する' :- '24時制の時間、分、秒をキーボードから入力'(_時間,_分,_秒), '秒数に変換して画面に出力する'(_時間,_分,_秒). '24時制の時間、分、秒をキーボードから入力'(_時間,_分,_秒) :- 整数を得る('時間(0〜23)を入力してください:',true,_時間), 整数を得る('分(0〜59)を入力してください:',true,_分), 整数を得る('秒(0〜59)を入力してください:',true,_秒). 整数を得る(_催促,_評価,_整数) :- 催促後に行入力(_行), 整数検査(_行,_整数), 整数評価(_評価). 催促後に行入力(_催促,_行) :- write(_催促), 行入力(_行). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). 整数検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数). 整数評価(_評価) :- call(_評価). '秒数に変換して画面に出力する'(_時間,_分,_秒) :- clac_second(_時間,_分,_秒,_診断), 通算秒表示(_時間,_分,_秒,_診断). clac_second(_時間,_分,_秒,_診断) :- '時間、分、秒が適正範囲の場合、時間、分、秒を通算秒に変換する'(_時間,_分,_秒,_診断),!. clac_second(_時間,_分,_秒,-1). '時間、分、秒が適正範囲の場合、時間、分、秒を通算秒に変換する'(_時間,_分,_秒,_診断) :- '時間(0〜23)、分(0〜59)、秒(0〜59)'(_時間,_分,_秒), _診断 is _時間 * 60 * 60 + _分 * 60 + _秒. '時間(0〜23)、分(0〜59)、秒(0〜59)'(_時間,_分,_秒) :- between(0,23,_時間), between(0,59,_分), between(0,59,_秒). 通算秒表示(_,_,_,-1) :- write('不正な時間、分、または秒が入力されました\n'),!. 通算秒表示(_時間,_分,_秒,_通算秒) :- writef('%w時間%w分%w秒は%w秒です\n',[_時間,_分,_秒,_通算秒]).