#include "polynomial.h"
void Polynomial::print() const
{
Node *print_node=front;
bool first_term=true;
while(print_node != NULL){
Term &print_term=print_node->entry;
if(first_term){
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";
cout<<endl;
}
void Polynomial::read()
{
clear();
double coefficient;
int last_exponent,exponent;
bool first_term=true;
cout<<"Enter the coffiecients and exponents for the polynomial,"
<<"one pair per line. Exponents must be in descending order."<<endl
<<"Enter a coefficient of 0 or exponent of 0 to termnimante."<<endl;
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."
<<endl;
}
else{
Term new_term(exponent,coefficient);
append(new_term);
first_term=false;
}
last_exponent=exponent;
}
}while(coefficient!=0.0&&exponent!=0);
}
void Polynomial::equals_sum(Polynomial p, Polynomial q)
{
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!=0){
Term answer_term(p_term.degree,
p_term.coefficient+q_term.coefficient);
append(answer_term);
}
}
}
}
void Polynomial::equals_difference(Polynomial p,Polynomial q)
{
Polynomial neg_q;
while(!q.empty()){
Term temp;
q.serve_and_retrieve(temp);
temp.coefficient=-1*temp.coefficient;
neg_q.append(temp);
}
equals_sum(p,neg_q);
}
int Polynomial::degree()const
{
if(empty())
return -1;
Term lead;
retireve(lead);
return lead.degree;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
polynomial.zip (29个子文件)
polynomial
polynomial
linked_queue.h 581B
node.cpp 136B
node.h 317B
term.h 134B
polynomial.h 420B
linked_queue.cpp 2KB
term.cpp 109B
polynomial.cpp 2KB
polynomial.vcproj.PC2010031614HZV.Administrator.user 1KB
Debug
node.obj 23KB
term.obj 3KB
BuildLog.htm 7KB
linked_queue.obj 35KB
vc90.pdb 220KB
vc90.idb 243KB
try_polynomial.obj 46KB
mt.dep 69B
polynomial.obj 55KB
polynomial.exe.embed.manifest 663B
polynomial.exe.embed.manifest.res 728B
polynomial.exe.intermediate.manifest 621B
try_polynomial.cpp 830B
polynomial.vcproj 4KB
polynomial.sln 896B
polynomial.suo 26KB
polynomial.ncb 1.6MB
Debug
polynomial.exe 46KB
polynomial.pdb 627KB
polynomial.ilk 513KB
共 29 条
- 1
xiaowei_cqu
- 粉丝: 1w+
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页