📄 polynomial.h
字号:
#include "linkQueue.h"
struct Term
{
int degree; // exponent
float coefficient;
Term *next;
Term(int d=0,float c=0.0) // constructors
{ degree=d; coefficient=c; }
};
class Polynomial: public Extended_queue
{ public:
void read( );
void print( );
void equals_sum(Polynomial p, Polynomial q);
void equals_difference(Polynomial p, Polynomial q);
void equals_product(Polynomial p, Polynomial q);
Error_code equals_quotient(Polynomial p, Polynomial q);
private:
double value;
};
void Polynomial::equals_sum(Polynomial p, Polynomial q)
{ value =p.value+q.value; }
void Polynomial::print( ) const
/* Post: The Polynomial is printed to cout . */
{ Node *print_node=front;
bool first_term=true;
while(print_node != NULL)
{ term &print_term=print_node->entry;
if(first_term) // In this case, suppress printing an initial '+' .
{ first_term=false;
if(print_term.coefficient<0) cout<<" -";
}
else if(print_term.coefficient<0) cout<<" -";
else cout<<" +";
double r=(print_term.coefficient>=0)? print_term.coefficient : -(print_term.coefficient);
if(r!=1) cout<<r;
if(print_term.degree>1) cout<<" X^" << print_term.degree;
if(print_term.degree==1) cout<<" X";
if (r==1 && print_term.degree==0) cout<<" 1";
print_node=print_node->next;
}
if(first_term)cout<<"0"; //Print 0 for an empty Polynomial .
cout<<endl;
}
void Polynomial::read( )
/* Post: The Polynomial is read from cin . */
{ clear( );
double coefficient;
int last_exponent, exponent;
bool first_term=true;
cout<<"Enter the coefficients and exponents for the polynomial, "
<< "one pair per line.\n";
cout<< "Exponents must be in descending order.\n";
cout<< "Enter a coefficient of 0 or an exponent of 0 to_terminate.\n";
do
{ cout<<"coefficient? " << flush;
cin>>coefficient;
if(coefficient != 0.0)
{ cout<<"exponent? " << flush; cin>>exponent;
if((!first_term && exponent>=last_exponent) || exponent<0)
{ exponent=0; cout<<"Bad exponent: Polynomial_terminates without its last_term.\n"; }
else
{ term new_term(exponent, coefficient);
append(new_term);
first_term=false;
}
last_exponent=exponent;
}
}while(coefficient && exponent );
}
void Polynomial::equals_sum(Polynomial p, Polynomial q)
/* Post: The Polynomial object is reset as the sum of the two parameters. */
{ clear( );
while(!p.empty( ) || !q.empty( ))
{ Term p_term, q_term;
if(p.degree( ) > q.degree( ))
{ p.serve_and_retrieve(p_term); append(p_term); }
else if(q.degree( ) > p.degree( ))
{ q.serve_and_retrieve(q_term); append(q_term); |
else
{ p.serve_and_retrieve(p_term);
q.serve_and_retrieve(q_term);
if(p_term.coefficient+q_term.coefficient)
{ Term answer_term(p_term.degree,p_term.coefficient+q_term.coefficient);
append(answer_term);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -