このディレクトリの索引

# 出典 :: #181 # [1] 授業単元:C言語とアルゴリズム # [2] 問題文: #  キーボードから自然数を入力し1から入力した数までの自然数の中から、 # 3の倍数と3のつく数字をすべて出力するプログラムを作成しなさい。ただし、 # 3の倍数と3のつく数字を入力したときに真(非0)、それ以外の場合は偽(0)を返す関数 # (関数名は任意)を作成し、それをmain関数内から呼び出して使用すること # # {実行例} # 自然数を入力して下さい. # 100 # 1から100までで3の倍数と3のつく数字は以下の通りです. # 3 6 9 12 13 # 15 18 21 23 24 # 27 30 31 32 33 # 34 35 36 37 38 # 39 42 43 45 48 # 51 53 54 57 60 # 63 66 69 72 73 # 75 78 81 83 84 # 87 90 93 96 99 'キーボードから自然数を入力し1から入力した数までの自然数の中から、 3の倍数と3のつく数字をすべて出力するプログラムを作成しなさい。ただし、 3の倍数と3のつく数字を入力したときに真、それ以外の場合は偽を返す関数 (関数名は任意)を作成し、それをmain関数内から呼び出して使用すること' :- 'キーボードから自然数を入力し'(_入力した数), '1から入力した数までの自然数の中から、3の倍数と3のつく数字をすべて出力する'(_入力した数). 'キーボードから自然数を入力し'(_自然数) :- 自然数を得る('自然数を入力して下さい. ',true,_自然数). '1から入力した数までの自然数の中から、3の倍数と3のつく数字をすべて出力する'(_入力した数) :- forall( '1から入力した数までの自然数の中から、3の倍数と3のつく数字を'(_入力した数,_自然数), 出力する(_自然数)). '1から入力した数までの自然数の中から、3の倍数と3のつく数字を'(_入力した数,_自然数) :- '1から入力した数までの自然数の中から、'(_入力した数,_自然数), '3の倍数と3のつく数字を'(_自然数). '1から入力した数までの自然数の中から、'(_入力した数,_自然数) :- between(1,_入力した数,_自然数). '3の倍数と3のつく数字を'(_自然数) :- '3の倍数と'(_自然数),!. '3の倍数と3のつく数字を'(_自然数) :- '3のつく数字を'(_自然数). '3の倍数と'(_自然数) :- 0 is _自然数 mod 3. '3のつく数字を'(_自然数) :- number_chars(_自然数,_文字ならび), member('3',_文字ならび),!. 出力する(_自然数) :- writef('%w\n',[_自然数]). 自然数を得る(_催促,_評価,_自然数) :- 催促後に行入力(_催促,_行), 自然数検査(_行,_自然数), 自然数評価(_自然数,_評価). 催促後に行入力(_催促,_行) :- 催促後に(_催促), 行入力(_行). 催促後に(_催促) :- write(_催促). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). 自然数検査(_行,_自然数) :- atom_number(_行,_自然数), 自然数は0より大きい整数(_自然数),!. 自然数検査(_行,_自然数) :- writef('入力された %w から自然数は得られませんでした。\n',[_行]),fail. 自然数は0より大きい整数(_自然数) :- integer(_自然数), _自然数 > 0. 自然数評価(_,_評価) :- call(_評価),!. 自然数評価(_自然数,_評価) :- writef('入力された自然数 %w では評価 %w が偽になります。\n',[_行,_評価]),fail.