このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 135代目 #771 # [1] C言語演習 # [2] n科目の点数を入力してGPAを出す(100~90が4,80~89は3,70~79は2,60~69は # 1,60以下は0) # 科目(1,'prolog初級'). 科目(2,'自然言語の論理学'). 科目(3,'関数型言語'). 科目(4,'C#講習'). 科目のグレードポイント(1,4.0). 科目のグレードポイント(2,4.0). 科目のグレードポイント(3,2.0). 科目のグレードポイント(4,1.0). 点数評価値(_点数,4) :- _点数 >= 90,_点数 =< 100,!. 点数評価値(_点数,3) :- _点数 >= 80,_点数 < 90,!. 点数評価値(_点数,2) :- _点数 >= 70,_点数 < 80,!. 点数評価値(_点数,1) :- _点数 >= 60,_点数 < 70,!. 点数評価値(_点数,0) :- _点数 < 60,!. '点数を入力してGPAを出す(100~90が4,80~89は3,70~79は2,60~69は1,60以下は0)'(GPA) :- 点数を入力して(_科目番号_点数ならび), 'GPAを出す(100~90が4,80~89は3,70~79は2,60~69は1,60以下は0)'(_科目番号_点数ならび,GPA). 点数を入力して(_科目番号_点数ならび) :- 四科目の点数を得る(_科目番号_点数ならび). findall([_科目番号,点数],( repeat,(at_end_of_stream(current_input),!,fail;科目番号と点数を得る(_科目番号,_点数))),_科目_点数ならび). 科目番号と点数を得る(_科目番号,_点数) :- 催促文付き整数を得る('科目番号を入力しなさい :',true,_科目番号), 催促文付き整数を得る('点数を入力しなさい :',true,_点数)),_科目番号_点数ならび). 催促文付き整数を得る(_催促文,_評価,_整数) :- 催促付き行入力(_催促,_行), 整数検査(_行,_整数), 評価(_行,_評価). 催促付き行入力(_催促,_行) :- writef('%w',[_催促]), 行入力(_行). 行入力(_行) :- read_line_to_codes(current_input,_行), atom_codes(_行,Codes). 整数検査(_行,_整数) :- 行から整数に変換(_行,_整数),!. 整数検査(_行,_整数) :- writef('入力された行 %w からは整数が得られません。再入力をお願いします。\n',[_行]), fail. 行から整数に変換(_行,_整数) :- atom_number(_行,_整数), integer(_整数). 評価(_行,_評価) :- call(_評価),!. 評価(_行,_評価) :- writef('評価項 _評価 の実行に失敗しました。\n',[_評価]), fail. 'GPAを出す'(_科目番号_点数ならび,GPA) :- 科目のグレードポイントの合計(_科目のグレードポイントの合計). 'GPAの計算'(_科目番号_点数ならび,GPA). 科目のグレードポイントの合計(_科目のグレードポイントの合計) :- findsum(_科目のグレードポイント,科目のグレードポイント(_,_科目のグレードポイント),_科目のグレードポイントの合計). 'GPAの計算'(_科目番号_点数ならび,_科目のグレードポイントの合計,GPA) :- 科目のGPAの合計(_科目番号_点数ならび,_科目のグレードポイントの合計,_科目のGPAの合計), GPA is _科目のGPAの合計 / _科目のグレードポイントの合計. 科目のGPAの合計(_科目番号_点数ならび,_科目のグレードポイントの合計,_科目のGPAの合計) :- findsum(_科目のGPA,( 点数評価値と科目のグレードポイントから科目のGPA値を得る(_科目番号_点数ならび,_科目のGPA)),_科目のGPAの合計). 点数評価値と科目のグレードポイントから科目のGPA値を得る(_科目番号_点数ならび,_科目のグレードポイントの合計,_科目のGPA) :- member([_科目番号,_点数],_科目番号_点数ならび), 点数評価値と科目のグレードポイントから(_科目番号,_点数,_点数評価値,_科目のGP), 科目のGPA値を得る(_点数評価値,_科目のGP,_科目のGPA). 点数評価値と科目のグレードポイントから(_科目番号,_点数,_科目のGPA) :- 点数評価値(_点数,_点数評価値), 科目のグレードポイント(_科目番号,_科目のGP). 科目のGPA値を得る(_点数評価値,_科目のGP,_科目のGPA) :- _科目のGPA is _点数評価値 * _科目のGP. findsum(_射影項,_目標,_合計) :- findall(_射影項,_目標,L), sum_list(L,_合計).