このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 135代目 #415 # [1] 授業単元:プログラム # [2] 問題文(含コード&リンク):プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,2つ以上あるときには1つだけにするようなプログラムをC言語により作成する. # 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,2つ以上あるときには1つだけにする'(_プログラムファイル) :- 'プログラムファイルを行ならびとして読み込む'(_プログラムファイル,_行ならび), 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,2つ以上あるときには1つだけにする'(_行ならび,_変更された行ならび), '変更された行ならびをプログラムファイルに書き戻す'(_プログラムファイル,_変更された行ならび). 'プログラムファイルを行ならびとして読み込む'(_プログラムファイル,_行ならび) :- see(_プログラムファイル), 行ならびとして読み込む(_行ならび),!. 行ならびとして読み込む(_行ならび) :- findall(_行,( repeat,(at_end_of_stream(current_input),!,seen,fail;行入力(_行))),_行ならび). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,2つ以上あるときには1つだけにする'(_行ならび,_変更された行ならび) :- 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,'(_行ならび,_変更された行ならび),!. 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,2つ以上あるときには1つだけにする'(_行ならび,_変更された行ならび) :- '2つ以上あるときには1つだけにする'(_行ならび,_変更された行ならび),!. 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,2つ以上あるときには1つだけにする'(_行ならび,_行ならび). 'プログラム開始前に%だけの行が1つも無いときには,そのような行を追加し,'(_行ならび,['%'|_行ならび]) :- \+(member('%',_行ならび)). '2つ以上あるときには1つだけにする'(_行ならび,['%'|L3]) :- append([['%','%'],L2,L3],_行ならび), 'L2は全て%でL3の先頭文字は%ではない'(L2,L3),!. 'L2は全て%でL3の先頭文字は%ではない'(L2,L3) :- 'L2は全て%で'(L2), 'L3の先頭文字は%ではない'(L3). 'L2は全て%で'(L2) :- forall(member(A,L2),A = '%'). 'L3の先頭文字は%ではない'(L3) :- \+(nth1(1,L3,'%')). '変更された行ならびをプログラムファイルに書き戻す'(_プログラムファイル,_変更された行ならび) :- tell(_プログラムファイル), forall(member(_行,_変更された行ならび),writef('%w\n',[_行])), told.