このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 129代目 #256 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク): # ファイルの1行目に2行目以降の各行に含まれる文字列の数が記述され, # 2行目以降はその数の不定長文字列が空白で区切られているような入力 # ファイルを読み込み,各行を以下に示す構造体の単方向連結リストに # 保存するプログラムを作成せよ.ここでは,attributes が1行分のデータ # を保持する. # struct t_list { # char **attributes; # struct t_list *next; # }; # またにはソースファイルには,生成した単方向連結リストの内容を # 標準出力に出力する関数 print_tlist を含むものとしprint_tlist により各行 # に含まれる文字列を出力するものとする.動作確認には,以下のテキストを用いよ. # なお,入力ファイル名はコマンドライン # 引数で指定するものとし,入力ファイルがオープンできなかった場合の処理も # 含めること.また,プログラム自身を除く引数の数が0個, # もしくは2個以上の場合は,何もせず適切なメッセージを出力して終了するものとする # 入力ファイル:http://www.uploda.tv/v/uptv0033032.txt 'ファイルの1行目に2行目以降の各行に含まれる文字列の数が記述され, 2行目以降はその数の不定長文字列が空白で区切られているような入力 ファイルを読み込み,各行を以下に示す構造体の単方向連結リストに 保存するプログラムを作成せよ.ここでは,attributes が1行分のデータ を保持する. struct t_list { char **attributes; struct t_list *next; }; またにはソースファイルには,生成した単方向連結リストの内容を 標準出力に出力する関数print_tlistを含むものとしprint_tlistにより各行 に含まれる文字列を出力するものとする.動作確認には,以下のテキストを用いよ. なお,入力ファイル名はコマンドライン 引数で指定するものとし,入力ファイルがオープンできなかった場合の処理も 含めること.また,プログラム自身を除く引数の数が0個, もしくは2個以上の場合は,何もせず適切なメッセージを出力して終了するものとする 入力ファイル:http://www.uploda.tv/v/uptv0033032.txt' :- 入力ファイル名はコマンドライン引数で指定するものとし(ファイル名), 'ファイルの1行目に2行目以降の各行に含まれる文字列の数が記述され, 2行目以降はその数の不定長文字列が空白で区切られているような入力 ファイルを読み込み,'(_ファイル名,_2行目以降の各行に含まれる文字列の数,_その数の不定長文字列のならび). 'ファイルの1行目に2行目以降の各行に含まれる文字列の数が記述され, 2行目以降はその数の不定長文字列が空白で区切られているような入力 ファイルを読み込み,'(_ファイル名,_2行目以降の各行に含まれる文字列の数,_その数の不定長文字列のならび) :- 行入力(_行_1), atom_number(_行_1,_2行目以降の各行に含まれる文字列の数), 行入力(_行_2), t527(_行_2,_その数の不定長文字列のならび), catch(open(_ファイル名,write,Output),error(E,I),open_error(_ファイル名,I)), print_tlist(Output,_その数の不定長文字列のならび), close(Output). 入力ファイル名はコマンドライン引数で指定するものとし(ファイル名) :- ユーザパラメータの取得(_ファイル名). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). ユーザパラメータの取得(_ファイル名) :- current_prolog_flag(argv,_ファイル名),!. ユーザパラメータの取得(_) :- error_tell(Output), write(Output,'パラメータで適切なファイル名が与えられませんでした\n'), errot_told(Output). t527(end_of_file,[]) :- !. t527(_行,[L|R]) :- split(_行,[' '],L), 行入力(_行_2), t527(_行_2,R). open_error(_ファイル名,Info) :- error_tell(Output), write(Output,'出力ファイル%tのオープンに失敗 :: %t\n',[_ファイル名,Info]), error_told(Output), fail. print_tlist(Output,[]) :- !. print_tlist(Output,[A|R]) :- swritef(S,'%w\n',[A]), writef(Output,S), print_tlist(Output,R).