このディレクトリの索引

# C/C++の宿題片付けます 149代目 #565 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク): # http://ime.nu/codepad.org/6wsr2CEj # 国語と数学の2科目のテストの成績を処理するプログラムにおいて、生徒数を # キーボードから入力した後に、そのデータを入力し、最後に入力したデータ全てを # 表示する。 # '国語と数学の2科目のテストの成績を処理するプログラムにおいて、生徒数をキーボードから入力した後に、そのデータを入力し、最後に入力したデータ全てを表示する' :- 生徒数をキーボードから入力した(_生徒数), 後に, そのデータを入力し(_生徒数,_入力したデータ), 最後に入力したデータ全てを表示する(_入力したデータ). 生徒数をキーボードから入力した(_生徒数) :- 生徒数の入力を催促後に行入力(_行), 生徒数入力診断(_行,_生徒数),!. 生徒数をキーボードから入力した(_生徒数) :- 生徒数をキーボードから入力した(_生徒数). 生徒数の入力を催促後に行入力(_行) :- 生徒数の入力を催促後に, 行入力(_行). 生徒数の入力を催促後に :- write('生徒数を入力して下さい: '), flush. 生徒数入力診断(_行,_生徒数) :- 行を解析して整数の生徒数を得る(_行,_生徒数),!. 生徒数入力診断(_行,_生徒数) :- 行の解析に失敗して生徒数が得られなかった場合は再入力を依頼して失敗する(_行). 行を解析して整数の生徒数を得る(_行,_生徒数) :- read_term_from_atom(_行,_生徒数,[]), integer(_生徒数). 行の解析に失敗して生徒数が得られなかった場合は再入力を依頼して失敗する(_行) :- writef('入力された %w から生徒数が得られませんでした。再入力をお願いします。',[_行]), fail. 後に :- true. そのデータを入力し(_生徒数,_入力したデータ) :- length(_入力したデータ,_生徒数), データを入力(0,_入力したデータ). データを入力(_,[]) :- !. データを入力(M,[[_国語点数,_数学点数]|R]) :- succ(M,N), 国語と数学の点数を連続して入力する(N,_国語点数,_数学点数), データを入力(N,R). 国語と数学の点数を連続して入力する(N,_国語点数,_数学点数) :- 国語点数を入力(N,_国語点数), 数学点数を入力(N,_数学点数). 国語点数を入力(N,_国語点数) :- 国語点数の入力を催促後に行入力(N,_行), 国語点数入力診断(_行,_国語点数),!. 国語点数を入力(N,_国語点数) :- 国語点数を入力(N,_国語点数). 国語点数の入力を催促後に行入力(N,_行) :- 国語点数の入力を催促後に(N), 行入力(_行). 国語点数の入力を催促後に(N) :- writef('%w人目の国語点数を入力して下さい: ',[N]), flush. 国語点数入力診断(_行,_国語点数) :- 行を解析して整数の国語点数を得る(_行,_国語点数),!. 行の解析に失敗して国語点数が得られなかった場合は再入力を依頼して失敗する(_行). 国語点数入力診断(_行,_国語点数) :- writef('入力された %w から国語点数が得られませんでした。再入力をお願いします。',[_行]), fail. 行を解析して整数の国語点数を得る(_行,_国語点数) :- read_term_from_atom(_行,_国語点数,[]), integer(_国語点数). 行の解析に失敗して国語点数が得られなかった場合は再入力を依頼して失敗する(_行) :- writef('入力された %w から国語点数が得られませんでした。再入力をお願いします。',[_行]), fail. 数学点数を入力(N,_数学点数) :- 数学点数の入力を催促後に行入力(N,_行), 数学点数入力診断(_行,_数学点数),!. 数学点数を入力(N,_数学点数) :- 数学点数を入力(N,_数学点数). 数学点数の入力を催促後に行入力(N,_行) :- 数学点数の入力を催促後に(N), 行入力(_行). 数学点数の入力を催促後に(N) :- writef('%w人目の数学点数を入力して下さい: ',[N]), flush. 数学点数入力診断(_行,_数学点数) :- 行を解析して整数の数学点数を得る(_行,_数学点数),!. 数学点数入力診断(_行,_数学点数) :- 行の解析に失敗して数学点数が得られなかった場合は再入力を依頼して失敗する(_行). 行を解析して整数の数学点数を得る(_行,_数学点数) :- read_term_from_atom(_行,_数学点数,[]), integer(_数学点数). 行の解析に失敗して数学点数が得られなかった場合は再入力を依頼して失敗する(_行) :- writef('入力された %w から数学点数が得られませんでした。再入力をお願いします。',[_行]), fail. 最後に入力したデータ全てを表示する(_入力したデータ) :- forall(入力したデータを(_入力したデータ,_国語点数,_数学点数),表示する(_国語点数,_数学点数)). 入力したデータを(_入力したデータ,_国語点数,_数学点数) :- member([_国語点数,_数学点数],_入力したデータ). 表示する(_国語点数,_数学点数) :- writef('%w,%w\n',[_国語点数,_数学点数]).