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;
}
要はどっちも同じなのですが、
標準入力から読むときに文字列として読むか、
直接多項式として読むかの違いです。
スペースとか入れてはいけないのに注意してください。