このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 127代目 #514 # [1]授業単元:プログラミング演習1 # # [2]問題文:画面より入力した成績データをファイルに登録する。 # 画面より入力する項目は以下のとおり。 # ・生徒コード、数字6桁、数字であること。 # ・氏名、文字列20文字、1字以上、20字以内 # ・国語(点数)、数字3桁、数字であること、0<=点数<=100 # ・算数(点数)、国語と同じ # ・社会(点数)、国語、算数と同じ # # # 生徒コードに999999が入力されたら終了する。 '[2]問題文:画面より入力した成績データをファイルに登録する。 画面より入力する項目は以下のとおり。 ・生徒コード、数字6桁、数字であること。 ・氏名、文字列20文字、1字以上、20字以内 ・国語(点数)、数字3桁、数字であること、0<=点数<=100 ・算数(点数)、国語と同じ ・社会(点数)、国語、算数と同じ 生徒コードに999999が入力されたら終了する。'(_ファイル名) :- '画面より入力した成績データを 画面より入力する項目は以下のとおり。 ・生徒コード、数字6桁、数字であること。 ・氏名、文字列20文字、1字以上、20字以内 ・国語(点数)、数字3桁、数字であること、0<=点数<=100 ・算数(点数)、国語と同じ ・社会(点数)、国語、算数と同じ 生徒コードに999999が入力されたら終了する。'(_入力データ), 'ファイルに登録する。'(_ファイル名,_入力データ). '画面より入力した成績データを 画面より入力する項目は以下のとおり。 ・生徒コード、数字6桁、数字であること。 ・氏名、文字列20文字、1字以上、20字以内 ・国語(点数)、数字3桁、数字であること、0<=点数<=100 ・算数(点数)、国語と同じ ・社会(点数)、国語、算数と同じ 生徒コードに999999が入力されたら終了する。'(_入力データ) :- '・生徒コード、数字6桁、数字であること。'(_生徒コード), '生徒コードに999999が入力されたら終了する。'(_生徒コード,_入力データ). '生徒コードに999999が入力されたら終了する。'('999999',[]) :- !. '生徒コードに999999が入力されたら終了する。'(_生徒コード,[[_生徒コード,_氏名,_国語,_算数,_社会]|R]) :- '・氏名、文字列20文字、1字以上、20字以内'(_氏名), '・国語(点数)、数字3桁、数字であること、0<=点数<=100'(_国語), '・算数(点数)、数字3桁、数字であること、0<=点数<=100'(_算数), '・社会(点数)、数字3桁、数字であること、0<=点数<=100'(_社会), '・生徒コード、数字6桁、数字であること。'(_次の生徒コード), '生徒コードに999999が入力されたら終了する。'(_次の生徒コード,R). '・生徒コード、数字6桁、数字であること。'(_生徒コード) :- write('生徒コード 数字6桁 :: '), 行入力(_生徒コード), atom_length(_生徒コード,6), forall(sub_atom(_生徒コード,_,1,_,_数字),数字(_数字)),!. '・生徒コード、数字6桁、数字であること。'(_生徒コード) :- '・生徒コード、数字6桁、数字であること。'(_生徒コード). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). 数字(_数字) :- member(_数字,['0','1','2','3','4','5','6','7','8','9']). '・氏名、文字列20文字、1字以上、20字以内'(_氏名) :- write('氏名 文字列20文字、1字以上、20字以内 :: '), 行入力(_行), atom_length(_行,_文字列の長さ), between(1,20,_文字列の長さ), 空白文字列を文字列後方に付加して20字とする(_行,_氏名),!. '・氏名、文字列20文字、1字以上、20字以内'(_氏名) :- '・氏名、文字列20文字、1字以上、20字以内'(_氏名). 空白文字列を文字列後方に付加して20字とする(_行,_氏名) :- 空白文字列を文字列後方に付加して(_行,_氏名), '20字とする'(_氏名). 空白文字列を文字列後方に付加して(_行,_氏名) :- 空白文字列を(_空白文字列), 文字列後方に付加して(_行,_空白文字列,_氏名). 空白文字列を(_空白文字列) :- between(1,20,N), findall(' ',between(1,N,_),_空白文字ならび), atom_chars(_空白文字列,_空白文字ならび). 文字列後方に付加して(_行,_空白文字列,_氏名) :- atom_concat(_行,_空白文字列,_氏名). '20字とする'(_氏名) :- atom_length(_氏名,20). '・国語(点数)、数字3桁、数字であること、0<=点数<=100'(_国語) :- 整数を得る('国語 :: ',between(0,100,_国語整数),_国語整数), '整数を3桁の文字列に変換'(_国語整数,_国語),!. '・国語(点数)、数字3桁、数字であること、0<=点数<=100'(_国語) :- '・国語(点数)、数字3桁、数字であること、0<=点数<=100'(_国語). '・算数(点数)、数字3桁、数字であること、0<=点数<=100'(_算数) :- 整数を得る('算数 :: ',between(0,100,_算数整数),_算数整数), '整数を3桁の文字列に変換'(_算数整数,_算数),!. '・算数(点数)、数字3桁、数字であること、0<=点数<=100'(_算数) :- '・算数(点数)、数字3桁、数字であること、0<=点数<=100'(_算数). '・社会(点数)、数字3桁、数字であること、0<=点数<=100'(_社会) :- 整数を得る('社会 :: ',between(0,100,_社会整数),_社会整数), '整数を3桁の文字列に変換'(_社会整数,_社会),!. '・社会(点数)、数字3桁、数字であること、0<=点数<=100'(_社会) :- '・社会(点数)、数字3桁、数字であること、0<=点数<=100'(_社会). 整数を得る(_催促,_評価,_整数) :- '催促を出力後、行入力、入力された行を評価して整数を得る'(_催促,_評価,_整数),!. 整数を得る(_催促,_評価,_整数) :- 整数を得る(_催促,_評価,_整数). '催促を出力後、行入力、入力された行を評価して整数を得る'(_催促,_評価,_整数) :- '催促を出力後、'(_催促), 行入力(_行), 入力された行を評価して整数を得る(_行,_評価,_整数),!. '催促を出力後、'(_催促) :- write(_催促). 入力された行を評価して整数を得る(_行,_評価,_整数) :- 整数入力検査(_行,_整数),!, 評価(_評価). 整数入力検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数),!. 整数入力検査(_行,_) :- writef('入力された %w からは整数が得られません。再入力をお願いします。\n',[_行]), fail. 評価(_評価) :- call(_評価),!. 評価(_評価) :- writef('評価 %w に失敗しました。再入力をお願いします。',[_評価]), fail. '整数を3桁の文字列に変換'(_整数,_3桁の文字列) :- atom_number(_数字文字列,_整数), 不足分の空白を文字列の先頭に追加(_数字文字列,_3桁の文字列). 不足分の空白を文字列の先頭に追加(_数字文字列,_3桁の文字列) :- 不足分の空白を(_空白文字列), 文字列の先頭に追加(_数字文字列,_空白文字列,_3桁の文字列). 不足分の空白を(_空白文字列) :- member(_空白文字列,['',' ',' ']). 文字列の先頭に追加(_数字文字列,_空白文字列,_3桁の文字列) :- atom_concat(_空白文字列,_数字文字列,_3桁の文字列), atom_length(_3桁の文字列,3). 'ファイルに登録する。'(_ファイル名,_入力データ) :- tell(_ファイル名), 'ファイルに書き込み'(_入力データ), told. 'ファイルに書き込み'(_入力データ) :- forall( member([_生徒コード,_氏名,_国語,_算数,_社会],_入力データ), writef('%w%w%w%w%w\n',[_生徒コード,_氏名,_国語,_算数,_社会])).