プログラミング雑感  新JavaScript入門  JavaScript,Neo-Generation  掲示板  表紙
4. 多項式クラス(4)  6. 無限級数クラス(1) 
プログラミング雑感
Written 8/12/01
5. 多項式クラス(5)
今回でいよいよ多項式クラスの完成です。
あと文字列を多項式に解釈する部分が残っていました。
仕様の変更
前のクラスでは定めていませんでしたが、多項式は次のような仕様です。
    <多項式> ::= <文字>|<多項式><文字>|<多項式><数字>
    <文字> ::= A|B|…|Z|a|b|…|z|_
    <数字> ::= 0|1|…|9
 
それから、前のクラスからの変更で、
/演算子を使えるようにします。 多項式同士の割り算ではなく、実数でのみ割れるようにします。
^演算子もサポートします。これはべき乗です。非負整数乗のみ有効です。
分解
前のページとほぼ同じなのですが、多項式を判別するところが違います。 Token構造体は次のようにし、
    typedef struct {
        char c;
        Polynomial  p;
        double   v;
    } Token;
 
cが'p'なら多項式と判別します。
演算
/演算子の計算は*と同じところでまとめて行い、 ^演算子は()内の処理と同じようにします。
結局最終的なPolynomialクラスは次のファイルです。
    polynomial2.h
 
実際に使うことがあったら、これをpolynomial.hという名前で使ってください。
あまりテストしていないので不具合が色々あるんじゃないかと思うのですが、 その場合は自分で修正してください(修正しました9/8)。
使い方
2つプログラムを作ったので参考にしてください。
    polynomial2.cpp
    ------------------------
    #include "polynomial2.h"
    
    void main(void) {
        Polynomial  p;
        cin >> p;
        cout << p << endl;
    }
    
    polynomial3.cpp
    ------------------------
    #include "polynomial2.h"
    
    void main(void) {
        string  str;
        cin >> str;
        Polynomial  p(str);
        cout << p << endl;
    }
 
要はどっちも同じなのですが、 標準入力から読むときに文字列として読むか、 直接多項式として読むかの違いです。 スペースとか入れてはいけないのに注意してください。
first, prev, next, exit