このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 127代目 #650 # [1] 授業単元: C # [2] 問題文(含コード&リンク):キーボードから入力された1以上の整数nについて、 # 次の例に示すように行番号と*を表示するプログラムを作成せよ。 # なお、*の数は、1行目はn個とし、1行毎に1ずつへっていくこととする。 # 表示結果の例 # 正の整数:7 # 1******* # 2****** # 3***** # 4**** # 5*** # 6** # 7* # のように作れとのことです。 # # [3] 環境 # [3.1]linux # [3.2] gcc # [3.3]C # [4]6月20日 # [5]繰り返しまでです、関数まではいっていません、お願いします 'キーボードから入力された1以上の整数nについて、 次の例に示すように行番号と*を表示するプログラムを作成せよ。 なお、*の数は、1行目はn個とし、1行毎に1ずつへっていくこととする。 また、0や負の数が入力された場合はプログラムが終了するようにせよ。 表示結果の例 正の整数:7 1******* 2****** 3***** 4**** 5*** 6** 7* のように作れとのことです。' :- 'キーボードから入力された1以上の整数nについて、1から整数n行まで順に行番号とn個から1個まで1行毎に1ずつへって*文字列を表示する'(_n). 'キーボードから入力された1以上の整数nについて、1から整数n行まで順に行番号とn個から1個まで1行毎に1ずつへって*文字列を表示する'(_n) :- 'キーボードから入力された1以上の整数nについて、'(_n), 'n個の星ならび'(_n,_n個の星ならび), '1から整数n行まで順に行番号とn個から1個まで1行毎に1ずつへって*文字列を各行続けて表示する'(1,_n個の星ならび). 'キーボードから入力された1以上の整数nについて、'(_n) :- 整数を得る(' n :: ',true,_n). 'n個の星ならび'(_n,_n個の星ならび) :- findall(*,between(1,_n,_),_n個の星ならび). '1から整数n行まで順に行番号とn個から1個まで1行毎に1ずつへって*文字列を各行続けて表示する'(_,[]) :- !. '1から整数n行まで順に行番号とn個から1個まで1行毎に1ずつへって*文字列を各行続けて表示する'(_行目,_星ならび) :- '行数はひとつずつ増やし、星はひとつずつへらして行を表示して行く'(_行目,_星ならび). '行数はひとつずつ増やし、星はひとつずつへらして行を表示して行く'(_行目,[*|R]) :- 星文字列を作り出して行数にならべて一行表示する(_行目,[*|R]), succ(_行目,_次の行目), '1から整数n行まで順に行番号とn個から1個まで1行毎に1ずつへって*文字列を各行続けて表示する'(_次の行目,R). 星文字列を作り出して行数にならべて一行表示する(_行目,[*|R]) :- atom_chars(_ひとつずつへっていく星文字列,[*|R]), writef('%w%w\n',[_行目,_ひとつずつへっていく星文字列]). 整数を得る(_催促,_評価,_整数) :- write(_催促), 行入力(_行), 整数検査(_行,_整数),!, 評価(_評価). 整数を得る(_催促,_評価,_整数) :- 整数を得る(_催促,_評価,_整数). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). 整数検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数),!. 整数検査(_行,_整数) :- writef('入力された %w からは整数が得られません。再入力をお願いします。\n'), fail. 評価(_評価) :- call(_評価),!. 評価(_評価) :- writef('評価 %w は真になりません。再入力をお願いします。',[_評価]), fail.