多项式加减法C++源码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《程序设计实践》课程实验报告

学号:126040594姓名:王乾帅

程序名称:多项式加法

一:程序源码:

#include

#include

using namespace std;

int NUM=0;//全局变量,控制结构体下标,大小代表多项式的项数;

int mt=0;

struct Data //结构体,用来存放单个项的系数和幂,分别为x,y;

{

int x;

int y;

};

Data Da[1000];

bool cmp(Data a,Data b) //为了使用sort对结构体进行排序,自定义cmp函数;

{

return a.y>b.y;

}

void run(string &a); //自定义函数,用来对字符串进行处理,提取出字符串中的单个项;int main()

{

int i,stop,sig,sig2=0;

string a,b;

cout<<"多项式加减法运算器\n"<<"请输入需要选择的运算(1加法.2减法.)\n";

cin>>sig;

cout<<"请输入第一个多项式:";//多项式输入

cin>>a;

cout<<"请输入第二个多项式:";

cin>>b;

run(a);//处理多项式1,将数据存入结构体中;

if(sig==2) mt=1;

run(b);//处理多项式2;

sort(Da,Da+NUM,cmp);//对结构体按照y(即单个项的幂)的大小排序

for(i=0;i

{

stop=i+1;//搜索幂相同的结构体,将x相加,在进行各种判断,进而输出

while(Da[i].y==Da[stop].y&&stop

{

stop++;

}

if(stop-i-1==0) //只搜索到一项的输出

{

if(Da[i].y==0)

{

//判断输出是否为第一项,判断输出为正数还是负数,分别进行输出;

if(Da[i].x>0&&i!=0&&sig2==1) {cout<<"+"<

if(Da[i].x>0&&i!=0&&sig2!=1) {cout<

if(Da[i].x>0&&i==0) {cout<

if(Da[i].x<0) {cout<

}

else if(Da[i].y==1)

{

if(Da[i].x>1&&i!=0&&sig2==1) {cout<<"+"<

if(Da[i].x>1&&i!=0&&sig2!=1) {cout<

if(Da[i].x>1&&i==0) {cout<

if(Da[i].x==1&&i!=0&&sig2==1) {cout<<"+";sig2=1;cout<<"x";}

if(Da[i].x==1&&i!=0&&sig2!=1) {sig2=1;cout<<"x";}

if(Da[i].x==1&&i==0) {sig2=1;cout<<"x";}

if(Da[i].x<-1) {cout<

if(Da[i].x==-1) {cout<<"-";sig2=1;cout<<"x";}

}

else //搜索到多个项的输出

{

if(Da[i].x>1&&i!=0&&sig2==1) {cout<<"+"<

if(Da[i].x>1&&i!=0&&sig2!=1) {cout<

if(Da[i].x>1&&i==0) {cout<

if(Da[i].x==1&&i!=0&&sig2==1) {cout<<"+"<<"x^"<

if(Da[i].x==1&&i!=0&&sig2!=1) {cout<<"x^"<

if(Da[i].x==1&&i==0) {cout<<"x^"<

if(Da[i].x<-1) {cout<

if(Da[i].x==-1) {cout<<"-"<<"x^"<

}

}

else

{

int sum=0,j;

for(j=i;j

{

sum+=Da[j].x;

}

if(Da[i].y==0)

{

//判断输出是否为第一项,判断输出为正数还是负数,分别进行输出;

if(sum>0&&i!=0&&sig2==1) {cout<<"+"<

相关文档
最新文档