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