#include
using namespace std;
class Polynomial{
public:
void Input();
void Output();
Polynomial operator+(const Polynomial&);
Polynomial operator-(const Polynomial&);
private:
int degree;
int *coeff;
};
void Polynomial::Input(){
cout<<"请输入多项式指数degree:";
cin>>degree;
coeff=new int[degree+1];
cout<<"请从高到低输入多项式系数:";
for(int i=degree;i>=0;i--)
cin>>coeff[i];
}
void Polynomial::Output(){
for(int i=degree;i>=0;i--)
{
if(i==degree)
{
if(coeff[i]==1)
cout<<"x^"< else if(coeff[i]==-1)
cout<<"-x^"< else
cout<}
else if(i==1)
{
if(coeff[i]==0)
continue;
else if(coeff[i]>0)
cout<<"+"<else if(coeff[i]<0)
cout<<"-"<<(-coeff[i])<<"x";
}
else if(i==0)
{
if(coeff[i]==0)
cout<else if(coeff[i]>0)
cout<<"+"<else if(coeff[i]<0)
cout<<"-"<<(-coeff[i])<}
else if(i>0&&i{
if(coeff[i]==0)
continue;
else if(coeff[i]==1)
cout<<"+x^"< else if(coeff[i]==-1)
cout<<"-x^"< else if(coeff[i]>0)
cout<<"+"<else if(coeff[i]<0)
cout<<"-"<<(-coeff[i])<<"x^"< }
}
}
Polynomial Polynomial::operator+(const Polynomial &rhs){
Polynomial sum;
int MaxDegree=degree>rhs.degree?degree:rhs.degree;
int MinDegree=degreesum.degree=MaxDegree;
sum.coeff=new int[sum.degree+1];
if(rhs.degree==MaxDegree)
{
for(int i=0;isum.coeff[i]=rhs.coeff[i];
}
else{
for(int i=0;isum.coeff[i]=coeff[i];
}
for(int i=0;isum.coeff[i]=coeff[i]+rhs.coeff[i];
return sum;
}
Polynomial Polynomial::operator-(const Polynomial &rhs){
Polynomial sub;
int MaxDegree=degree>rhs.degree?degree:rhs.degree;
int MinDegree=degreesub.degree=MaxDegree;
sub.coeff=new int[sub.degree+1];
if(rhs.degree==MaxDegree)
{
for(int i=0;isub.coeff[i]=rhs.coeff[i];
}
else{
for(int i=0;isub.coeff[i]=coeff[i];
}
for(int i=0;isub.coeff[i]=coeff[i]-rhs.coeff[i];
return sub;
}
int main()
{
Polynomial a,b,c,d;
a.Input();
b.Input();
c=a+b;
d=a-b;
a.Output();
b.Output();
c.Output();
d.Output();
return 0;
}
满意请采纳哦!输出考虑了负系数或者0和1的情况,不懂的可以问,比较全面了。
不知道你满意不。=。=饿,修改完毕
#include
using namespace std;
class polynomial
{
private:
int num[100];
int len;
public:
polynomial(int* a,int l)
{
int i;
len = l;
for(i=0;inum[i] = a[l-i-1];
}
polynomial()
{
memset(num,0,sizeof(num));
len = 0;
}
int getx(int X)
{
int sum,i,x;
sum =0;
x=1;
for(i=0;i{
sum+=num[i]*x;
x*=X;
}
return sum;
}
void Output()
{
int i;
for(i=len-1;i>=0;i--)
{
if(num[i])
{
if(num[i]>0 && i != len-1)
cout<<"+";
if(!(i!= 0 && num[i]==1))
cout<if(i)
cout<<"x";
if(i>1)
cout<<"^"< }
}
cout<}
polynomial operator+ (polynomial a)
{
polynomial New;
int i;
New.len = len >a.len ? len : a.len;
for(i=0;iNew.num[i] = num[i]+a.num[i];
return New;
}
polynomial operator- (polynomial a)
{
polynomial New;
int i;
New.len = len >a.len ? len : a.len;
for(i=0;iNew.num[i] = num[i]-a.num[i];
return New;
}
};
int main()
{
int a[100];
int n,i;
cin>>n;
for(i=0;icin>>a[i];
polynomial Test(a,n);
polynomial Test3;
Test.Output();
cin>>n;
cout<Test3 = Test + Test;
Test3.Output();
Test3 = Test - Test - Test;
Test3.Output();
system("pause");
return 0;
}
#include
#include
#include
using namespace std;
#define MAX_ITEM 50
class polynomial
{
public:
polynomial(int degree, int coeff[]) {
this->degree = degree;
for (int i = degree; i >= 0; --i) {
this->coeff[i] = coeff[i];
}
}
void output() const {
bool isFirstItem = true;
for (int i = 0; i < item_num(); ++i) {
if (coeff[i]) {
if (!isFirstItem) {
if (coeff[i] > 0)
cout<<"+";
} else {
isFirstItem = false;
}
int cur_degree = degree -i;
if (cur_degree == 0) {
cout<
if (coeff[i] == 1) {
cout<<"X";
} else if (coeff[i] == -1) {
cout<<"-X";
} else {
cout<
} else {
if (coeff[i] == 1) {
cout<<"X^"<
cout<<"-X^"<
cout<
}
}
}
cout<
friend polynomial operator+(const polynomial& p1, const polynomial& p2) {
int arr[MAX_ITEM];
int deg = 0;
if (p1.degree > p2.degree) {
deg = p1.degree;
int pos = p1.degree - p2.degree;
for (int i = 0; i < deg+1; ++i) {
if (i < pos) {
arr[i] = p1.coeff[i];
} else {
arr[i] = p1.coeff[i] + p2.coeff[i-pos];
}
}
} else {
deg = p2.degree;
int pos = p2.degree - p1.degree;
for (int i = 0; i < deg+1; ++i) {
if (i < pos) {
arr[i] = p2.coeff[i];
} else {
arr[i] = p2.coeff[i] + p1.coeff[i-pos];
}
}
}
return polynomial(deg, arr);
}
friend polynomial operator-(const polynomial& p1, const polynomial& p2) {
int arr[MAX_ITEM];
int deg = 0;
if (p1.degree > p2.degree) {
deg = p1.degree;
int pos = p1.degree - p2.degree;
for (int i = 0; i < deg+1; ++i) {
if (i < pos) {
arr[i] = p1.coeff[i];
} else {
arr[i] = p1.coeff[i] - p2.coeff[i-pos];
}
}
} else {
deg = p2.degree;
int pos = p2.degree - p1.degree;
for (int i = 0; i < deg+1; ++i) {
if (i < pos) {
arr[i] = p2.coeff[i];
} else {
arr[i] = p2.coeff[i] - p1.coeff[i-pos];
}
}
}
return polynomial(deg, arr);
}
int item_num() const {
return degree + 1;
}
int f(int X) {
int res = 0;
for (int i = 0; i < degree + 1; ++i) {
res += pow(X, degree-i) * coeff[i];
}
return res;
}
private:
int coeff[MAX_ITEM];
int degree;
};
int main()
{
int degree;
int coeff[MAX_ITEM] = {0};
cout<<"poly1's degree:";
cin>>degree;
if (degree < 0) {cout<<"Error"<
cout<<"\tcoeff:";
cin>>coeff[i];
}
polynomial poly1(degree, coeff);
cout<<"poly1:"<
cout<<"poly2's degree:";
cin>>degree;
if (degree < 0) {cout<<"Error"<
for (int i = 0; i < degree+1; ++i) {
cout<<"\tcoeff:";
cin>>coeff[i];
}
polynomial poly2(degree, coeff);
cout<<"poly2:"<
polynomial poly3 = poly1 + poly2;
cout<<"poly1 + poly2:"<
int X;
cout<<"set the value of X:";
cin>>X;
int res = poly3.f(X);;
cout<<"res: "<
}