?? p50_52test.cpp
字號:
const int MaxTerms = 100;
class Polynomial; //多項式類的前視聲明
class term { //多項式中項的類定義
friend Polynomial; //定義Polynomial類為term類的友元類
private:
float coef; //系數(shù)
int exp; //指數(shù)
};
class Polynomial {
public:
//在定義2.3中列出的多項式的公共操作
// ……
Polynomial ( ); //返回多項式p(x)=0
int operator ! ( ); //若*this是零多項式, 則返回1, 否則返回0。
int Coef (int e); //返回多項式*this中指數(shù)e的系數(shù)。
int LeadExp ( ); //返回多項式*this中最大的指數(shù)。
Polynomial Add (Polynomial poly); //返回多項式*this與多項式poly的和。
Polynomial Mult (Polynomial poly); //返回多項式*this與多項式poly的乘積。
void NewTerm (float c, int e);
float Eval ( float x); //計算多項式*this在變量為x時的值。
private:
static term termArray[MaxTerms]; //存放多項式的數(shù)組
static int free; //多項式有效項數(shù)的下一位置
//要求在類定義之外定義:
// term Polynomial::termArray[MaxTerms];
// int Polynomial::free = 0; //在termArray中下一個空閑位置
int start, finish ; //多項式開始與結(jié)束位置
};
#include <iostream.h>
void Polynomial::NewTerm ( float c, int e ) {
//把一個新的項加到多項式C (x)中
if ( free >= MaxTerms ) {
cout << "Too many terms in polynomials" << endl; return;
}
termArray[free].coef = c; termArray[free].exp = e; free++;
}
Polynomial Polynomial::Add ( Polynomial B ) {
//返回兩個多項式A(x) {在*this中}與B(x)的和
Polynomial C; int a = start; int b = B.start; C.start = free; //a, b分別為兩多項式檢測指針
float c; //c為結(jié)果多項式的存放指針
while ( a <= finish && b <= B.finish )
if ( termArray[a].exp == termArray[b].exp) { //比較對應項的指數(shù)
c = termArray[a].coef + termArray[b].coef; //相等,系數(shù)相加
if ( c ) NewTerm ( c, termArray[a].exp ); //和不為0,建立新項
a++; b++;
}
else if ( termArray[a].exp < termArray[b].exp ) {
NewTerm ( termArray[b].coef, termArray[b].exp ); //不等,建立新項
b++;
}
else if ( termArray[a].exp < termArray[b].exp ) {
NewTerm ( termArray[a].coef, termArray[a].exp ); //不等,建立新項
a++;
}
for ( ; a<=finish; a++ ) //加A(x)中剩余的項
NewTerm ( termArray[a].coef, termArray[a].exp );
for ( ; b<=B.finish; b++ ) //加B(x)中剩余的項
NewTerm ( termArray[b].coef, termArray[b].exp );
C.finish = free-1;
return C;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -