このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 137代目 #936 # お手上げです。頑張ったのですが、できませんでした。 # 申し訳ないですけどお願いします。 # # 問題 # # 複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ. # # 【実行例】 # # 何個の文字列を入力しますか?:4 # 入力文字列[1]:Computer # 入力文字列[2]:Science # 入力文字列[3]:Tarou # 入力文字列[4]:Tanaka # # 繋ぎ合わせる順番: # 2 # 4 # 3 # 1 # # 結果:ScienceTanakaTarouComputer # '複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力する' :- '複数の文字列を読み込み,'(_複数の,_入力文字列ならび), 'さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力する'(_複数の,_入力文字列ならび). '複数の文字列を読み込み,'(_複数の,_入力文字列ならび) :- 複数の(_複数の), findall(_行,( 文字列を読み込み(_複数の,_行)),_入力文字列ならび). 複数の(_複数の) :- 整数を得る('何個の文字列を入力しますか?: ',true,_複数の), writef('文字列を%w行連続して入力してください\n',[_複数の]). 文字列を読み込み(_複数の,_行) :- between(1,_複数の,_), 行入力(_行). 'さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力する'(_複数の,_入力文字列ならび) :- 'さらに,それらの文字列を繋ぎ合わせる順番を入力し'(_複数の,_取り出し順ならび), 結果を出力する(_入力文字列ならび,_取り出し順ならび). 'さらに,それらの文字列を繋ぎ合わせる順番を入力し'(_複数の,_取り出し順ならび) :- write('入力した文字列を繋ぎ合わせる順番を入力してください\n'), それらの文字列を繋ぎ合わせる順番を入力し(_複数の,_取り出し順ならび). それらの文字列を繋ぎ合わせる順番を入力し(_複数の,_取り出し順ならび) :- findall(_番目,( 順番を入力し(_複数の,_番目)),_取り出し順ならび). 順番を入力し(_複数の,_番目) :- between(1,_複数の,_), 整数を得る(_番目). 整数を得る(_番目) :- 整数を得る('',true,_番目). 結果を出力する(_入力文字列ならび,_取り出し順ならび) :- 結果を(_入力文字列ならび,_取り出し順ならび,_指定した順番の文字列ならび), 出力する(_指定した順番の文字列ならび). 結果を(_入力文字列ならび,_取り出し順ならび,_指定した順番の文字列ならび) :- findall(_文字列,( 指定順に取り出す(_入力文字列ならび,_取り出し順ならび,_文字列)),_指定した順番の文字列ならび). 指定順に取り出す(_入力文字列ならび,_取り出し順ならび,_文字列) :- member(_番目,_取り出し順ならび), nth1(_番目,_入力文字列ならび,_文字列). 出力する(_指定した順番の文字列ならび) :- 文字列を指定した順番に繋ぎ合わせて(_指定した順番の文字列ならび,_表示文字列), writef('繋ぎ合わせた文字列は: %w\n',[_表示文字列]). 文字列を指定した順番に繋ぎ合わせて(_指定した順番の文字列ならび,_表示文字列) :- atomic_list_concat(_指定した順番の文字列ならび,_表示文字列). 整数を得る(_催促文,_条件,_整数) :- 以下の入力に失敗した場合は再入力する, '催促文の表示後、入力された行を整数に変換し、条件を実行する'(_催促文,_条件,_整数),!. 以下の入力に失敗した場合は再入力する :- repeat. '催促文の表示後、入力された行を整数に変換し、条件を実行する'(_催促文,_条件,_整数) :- '催促文の表示後、入力された行を整数に変換し、'(_催促文,_行,_整数), 条件を実行する(_行,_整数,_条件). '催促文の表示後、入力された行を整数に変換し、'(_催促文,_行,_整数) :- 催促文の表示(_催促文), 行入力(_行), 整数入力検査(_行,_整数). 催促文の表示(_催促文) :- writef('%w',[_催促文]). 行入力(_行) :- read_line_to_codes(user_input,Codes), atom_codes(_行,Codes). 整数入力検査(_行,_整数) :- 行を解析して整数を得る(_行,_整数). 整数入力検査(_行,_) :- 整数を得られなかったらそのことを表示してfail(_行). 行を解析して整数を得る(_行,_整数) :- 行を解析して(_行,_整数), それが整数であることを確認する(_整数). 行を解析して(_行,_整数) :- catch(read_term_from_atom(_行,_整数,[]),E,fail). それが整数であることを確認する(_整数) :- integer(_整数). 整数を得られなかったらそのことを表示してfail(_行) :- writef('入力された行 %w からは整数が得られませんでした。再入力をお願いします。\n',[_行]), fail. 条件を実行する(_行,_整数,_条件) :- call(_条件). 条件を実行する(_行,_整数,_条件) :- writef('%w から得た整数 %w は、条件 %w を満たしません。再入力をお願いします。\n',[_行,_整数,_条件]), fail.