このディレクトリの索引

#  配列分からないので助けてください!
#  [1] 授業単元:Cプログラミング(配列)
#  [2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1291228.txt
#  [3] 環境
#   [3.1] Linux
#   [3.2] gcc
#   [3.3] 言語: C
#  問題5:実数xの値をキーボードから入力し数列an=1/n! (n=0...9)を係数に持つ多項式
#  f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を計算して表示するプログラム。forループを使うこと
#  配列分からないので助けてください!

'実数xの値をキーボードから入力し数列an=1/n! (n=0...9)を係数に持つ多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を計算して表示する' :-
        '実数xの値をキーボードから入力し'(_実数x),
        '数列an=1/n! (n=0...9)を係数に持つ多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を'(_実数x,_多項式の項表示ならび,_多項式の値),
        表示する(_実数x,_多項式の項表示ならび,_多項式の値).

'実数xの値をキーボードから入力し'(_実数x) :-
        催促付き実数入力('実数値を入力してください : ',_実数x),!.

'数列an=1/n! (n=0...9)を係数に持つ多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を'(_実数x,_多項式の項表示ならび,_多項式の値) :-
        '数列an=1/n! (n=0...9)を係数に持つ'(_係数ならび),
        '多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を'(0,_係数ならび,_実数x,_多項式の項表示ならび,0.0,_多項式の値).

'数列an=1/n! (n=0...9)を係数に持つ'(_係数ならび) :-
        findall(1/U,(
                    for(0,N,9),
                    階乗(N,U)),
                _係数ならび).

'多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を'(_,[],_,[],_多項式の値,_多項式の値) :- !.
'多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を'(N,[_係数|R],[_項表示|R2],_実数x,S1,_多項式の値) :-
        S2 is S1 + _係数 * (_実数X ^ N),
        write_formatted_atom(_項表示,'%t*x^%1d',[_係数,N]),
        N_1 is N - 1,
        '多項式f(x)=a0+a1x+・・・+a8x^8+a9x^9の値を'(N_1,R,_実数x,R2,S2,_多項式の値).

催促付き実数入力(_催促文,_実数) :-
        write(_催促文),
        get_line(Line),
        催促付き実数入力診断(Line,_実数),!.
催促付き実数入力(_催促文,_実数) :- 催促付き実数入力(_催促文,_実数).

催促付き実数入力診断(Line,_実数) :-
        atom_to_term(Line,_実数,_),
        float(_実数),!.
催促付き実数入力診断(Line,_実数) :-
        write_formatted('入力された %t から実数値は得られませんでした。再入力をお願いします。\n',[Line]),
        fail.

表示する(_実数x,_多項式の項表示ならび,_多項式の値) :-
        concat_atom(_多項式の項表示ならび,'+',_多項式表示),
        write_formatted('f(x)=%t に於いて、 x=%t\n',[_多項式表示,_実数x]),
        write_formatted('f(%t)=%t\n',[_実数x,_多項式の値]).

催促付き実数入力(_催促文,_実数) :-
        write(_催促文),
        get_line(Line),
        催促付き実数入力診断(Line,_実数),!.
催促付き実数入力(_催促文,_実数) :- 催促付き実数入力(_催促文,_実数).

催促付き実数入力診断(Line,_実数) :-
        atom_to_term(Line,_実数,_),
        float(_実数),!.
催促付き実数入力診断(Line,_実数) :-
        write_formatted('入力された %t から実数値は得られませんでした。再入力をお願いします。\n',[Line]),
        fail.