このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 133代目 #6 # # 問題2 # 長さX(cm:センチメートル)を入力すると、Y(inch:インチ)に変換するプログラムを作成せよ。1(inch)は2.54(cm)とする。実行結果の例を以下に示す。 # ------------------------------------------------ # 長さ(センチメートルで入力して下さい):2.54 # 2.54(cm)は 1.000(inch)です。 '長さX(cm:センチメートル)を入力すると、Y(inch:インチ)に変換する。そのセンチメートル・インチ変換を表示する。' :- '長さX(cm:センチメートル)を入力すると、Y(inch:インチ)に変換する。'(X,Y), 'そのセンチメートル・インチ変換を表示する。'(X,Y). '長さX(cm:センチメートル)を入力すると、Y(inch:インチ)に変換する。'(X,Y) :- '長さX(cm:センチメートル)を入力すると、'(X), 'Y(inch:インチ)に変換する。'(X,Y). '長さX(cm:センチメートル)を入力すると、'(X) :- 数を得る('長さ(センチメートルで入力して下さい):',true,X). 'Y(inch:インチ)に変換する。'(X,Y) :- 'センチメートル・インチ変換'(X,Y). 'センチメートル・インチ変換'(_cm,_inch) :- '_cmが具体値である場合はセンチメートルをインチに変換する'(_cm,_inch),!. 'センチメートル・インチ変換'(_cm,_inch) :- '_inchが具体値である場合はインチをセンチメートルに変換する'(_inch,_cm). '_cmが具体値である場合はセンチメートルをインチに変換する'(_cm,_inch) :- '_cmが具体値である場合は'(_cm), センチメートルをインチに変換する(_cm,_inch). '_cmが具体値である場合は'(_cm) :- \+(var(_cm)). センチメートルをインチに変換する(_cm,_inch) :- _inch is _cm / 2.54. '_inchが具体値である場合はインチをセンチメートルに変換する'(_inch,_cm) :- '_inchが具体値である場合は'(_inch), インチをセンチメートルに変換する(_inch,_cm). '_inchが具体値である場合は'(_inch) :- \+(var(_inch)). インチをセンチメートルに変換する(_inch,_cm) :- _cm is _inch * 2.54. 'そのセンチメートル・インチ変換を表示する。'(_cm,_inch) :- format('~2f (cm) は ~3f (inch) です。\n',[_cm,_inch]). 数を得る(_催促,_評価,_数) :- 催促後に行入力して得られた行から条件に適合した数を得る(_催促,_評価,_数),!. 数を得る(_催促,_評価,_数) :- 数を得る(_催促,_評価,_数). 催促後に行入力して得られた行から条件に適合した数を得る(_催促,_評価,_数) :- 催促後に行入力(_催促,_行), 数検査(_行,_数), 数評価(_評価). 催促後に行入力(_催促,_行) :- write(_催促), 行入力(_行). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). 数検査(_行,_数) :- atom_number(_行,_数),!. 数検査(_行,_数) :- writef('入力された %w からは数が得られません。再入力をお願いします。\n',[_行]), fail. 数評価(_評価) :- call(_評価),!. 数評価(_評価) :- writef('数評価 %t で失敗しました。再入力をお願いします。\n',[_評価]), fail.