このディレクトリの索引

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

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

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

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

'数列an=n+1(n=0...9)を係数に持つ'(_係数ならび) :-
        findall(U,(
                    for(0,N,9),
                    U is N + 1),
                L),
        reverse(L,_係数ならび).

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

表示する(_実数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.