このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 160代目 #603 # [1]C/C++プログラミング実習  # [2]問題 http://ime.nu/codepad.org/IbHwR87p # [3]visual studio 2010 # [4]11月12日 10時 # [5]ファイルを読み取って書き換えてtxtファイルに出力するというものですが #   私には難しすぎてわかません。どなたか助けてくれれば幸いです。 # # /* # あるtxtファイルにファイル名とランダムな数字で書かれた多数の数列がある。 # # 例 # caltech10/accordion-0001.jpg 1 0 2 0 1 0... # caltech10/accordion-0002.jpg 1 2 7 0 0 3... # caltech10/accordion-0003.jpg 0 0 2 199 0 3... # caltech10/accordion-0004.jpg 0 0 0 0 5 1... # ・ # ・ # このtxtファイルを読み取って # ファイル名を削除し左から順に番号を振った上で要素が0のものを削除し書き換え # txtファイルに出力するプログラムを作れ。 # # 実行例 # 1:1 3:2 5:1… # 1:1 2:2 3:7 6:3… # 3:2 4:199 6:3.... # 5:5 … # # 必ず 番号:数値?番号:数値?番号:数値?… # という形にすること # # */ # 'あるtxtファイルにファイル名とランダムな数字で書かれた多数の数列がある。 このtxtファイルを読み取って ファイル名を削除し左から順に番号を振った上で要素が0のものを削除し書き換え txtファイルに出力する' :- 'あるtxtファイルにファイル名とランダムな数字で書かれた多数の数列がある。このtxtファイルを読み取ってファイル名を削除し左から順に番号を振った上で要素が0のものを削除し書き換えtxtファイルに出力する'. 'あるtxtファイルにファイル名とランダムな数字で書かれた多数の数列がある。このtxtファイルを読み取ってファイル名を削除し左から順に番号を振った上で要素が0のものを削除し書き換えtxtファイルに出力する' :- get_split_lines('あるファイル.txt',[' '],LL), open('書き換え.txt',write,_出力), ファイル名を削除し左から順に番号を振った上で要素が0のものを削除し表示する(_出力,LL), close(_出力). ファイル名を削除し左から順に番号を振った上で要素が0のものを削除し表示する(_出力,LL) :- ファイル名を削除し左から順に番号を振った上で(LL,Nth,N,_残り行要素,_残り項目要素), 要素が0のものを削除し表示する(_出力,Nth,N), '_残り行要素が[]になったら終了する。_残り項目要素が[]の時は改行を入れる'(_出力). '_残り行要素が[]になったら終了する。_残り項目要素が[]の時は改行を入れる'(_出力,_残り行要素,_残り項目要素) :- _残り項目要素 = [], write(_出力,'\n'), _残り行要素 = []. ファイル名を削除し左から順に番号を振った上で(LL,Nth,N,_残り行要素,_残り項目要素) :- append(_,[[_|L]|_残り行要素],LL), append(L0,[N|_残り項目要素],L), length([_|L0],Nth). 要素が0のものを削除し表示する(_出力,Nth,0) :- !. 要素が0のものを削除し表示する(_出力,Nth,A) :- writef(_出力,'%t:%t ',[Nth,A]). get_split_lines(_ファイル,_区切り文字列ならび,_項目区切り行ならび) :- ファイルの各行を項目区切りしてならびとする(_ファイル,_区切り文字列ならび,_項目区切り行ならび). ファイルの各行を項目区切りしてならびとする(_ファイル,_区切り文字列ならび,_項目区切り行ならび) :- open(_ファイル,read,_入力), '_入力の各行を項目区切りしてならびとする'(_入力,_区切り文字列ならび,_項目区切り行ならび). '_入力の各行を項目区切りしてならびとする'(_入力,_区切り文字列ならび,_項目区切り行ならび) :- findall(_項目区切り行,( at_end_of_streamになるまで得られる行を項目区切りする(_入力,_区切り文字列ならび,_項目区切り行)),_項目区切り行ならび). at_end_of_streamになるまで得られる行を項目区切りする(_入力,_区切り文字列ならび,_項目区切り行) :- at_end_of_streamになるまで行入力(_入力,_行), 数値変換項目区切り(_行,_区切り文字列ならび,_項目区切り行). at_end_of_streamになるまで行入力(_入力,_行) :- at_end_of_stream(_入力),!,close(_入力),fail. at_end_of_streamになるまで行入力(_入力,_行) :- 一行ずつ入力を続ける(_入力,_行). 一行ずつ入力を続ける(_入力,_行) :- 行入力(_入力,_行). 一行ずつ入力を続ける(_入力,_行) :- at_end_of_streamになるまで行入力(_入力,_行). 行入力(_入力,_行) :- read_line_to_codes(_入力,_文字コードならび), atom_codes(_行,_文字コードならび). 数値変換項目区切り(_文字列,_区切り文字列ならび,_区切られた文字列ならび) :- 数値変換項目区切り(_文字列,_区切り文字列ならび,_使われている区切り文字ならび,_区切られた文字列ならび). 数値変換項目区切り('',_,[],[]) :- !. 数値変換項目区切り(_文字列,_区切り文字列ならび,_使われている区切り文字ならび,_区切られた文字列ならび) :- '先頭から区切り文字列で区切って行く(可能なものは数値に変換する)'(_文字列,_区切り文字列ならび,_使われている区切り文字ならび,_区切られた文字列ならび),!. 数値変換項目区切り(_文字列,_,[],[_文字列_1]) :- 数値に変換可能なものは変換する(_文字列,_文字列_1). '先頭から区切り文字列で区切って行く(可能なものは数値に変換する)'(_文字列,_区切り文字列ならび,[_区切り文字列|R1],[_前文字列_1|R2]) :- '区切り文字列で前文字列、後文字列に区切る(前文字列は空文字ではない)'(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列), 数値に変換可能なものは変換する(_前文字列,_前文字列_1), 数値変換項目区切り(_後文字列,_区切り文字列ならび,R1,R2). '区切り文字列で前文字列、後文字列に区切る(前文字列は空文字ではない)'(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列) :- member(_区切り文字列,_区切り文字列ならび), 副文字列(_文字列,_前文字列,_区切り文字列,_後文字列), 前文字列は空文字ではない(_前文字列). 副文字列(_文字列,_前文字列,_副文字列,_後文字列) :- atom_concat(_前文字列,_残り文字列,_文字列), atom_concat(_副文字列,_後文字列,_残り文字列). 数値に変換可能なものは変換する(_文字列,_項目) :- atom_number(_文字列,_項目),!. 数値に変換可能なものは変換する(_文字列,_文字列). 前文字列は空文字ではない(_前文字列) :- _前文字列 \== ''.