教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 行业资料 >

多项式加减法C++源码

来源:网络收集 时间:2026-09-12
导读: 多项式加减法C++源码 《程序设计实践》课程实验报告 学号:126040594姓名:王乾帅 程序名称:多项式加法 一:程序源码: #includeiostream #includestring using namespace std; int NUM=0;//全局变量,控制结构体下标,大小代表多项式的项数; int mt=0; str

多项式加减法C++源码

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

学号:126040594姓名:王乾帅

程序名称:多项式加法

一:程序源码:

#include<iostream>

#include<string>

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<NUM;)//以下为输出部分 { stop=i+1;//搜索幂相同的结构体,将x相加,在进行各种判断,进而输出 while(Da[i].y==Da[stop].y&&stop<NUM+1) { stop++; }

多项式加减法C++源码

if(stop-i-1==0) //只搜索到一项的输出 { if(Da[i].y==0) { //判断输出是否为第一项,判断输出为正数还是负数,分别进行输出; if(Da[i].x>0&&i!=0&&sig2==1) {cout<<"+"<<Da[i].x;sig2=1;} if(Da[i].x>0&&i!=0&&sig2!=1) {cout<<Da[i].x;sig2=1;} if(Da[i].x>0&&i==0) {cout<<Da[i].x;sig2=1;} if(Da[i].x<0) {cout<<Da[i].x;sig2=1;} } else if(Da[i].y==1) { if(Da[i].x>1&&i!=0&&sig2==1) {cout<<"+"<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x>1&&i!=0&&sig2!=1) {cout<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x>1&&i==0) {cout<<Da[i].x;sig2=1;cout<<"x";} 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<<Da[i].x;sig2=1;cout<<"x";} if(Da[i].x==-1) {cout<<"-";sig2=1;cout<<"x";} } else //搜索到多个项的输出 { if(Da[i].x>1&&i!=0&&sig2==1) {cout<<"+"<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x>1&&i!=0&&sig2!=1) {cout<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x>1&&i==0) {cout<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==1&&i!=0&&sig2==1) {cout<<"+"<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==1&&i!=0&&sig2!=1) {cout<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==1&&i==0) {cout<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x<-1) {cout<<Da[i].x<<"x^"<<Da[i].y;sig2=1;} if(Da[i].x==-1) {cout<<"-"<<"x^"<<Da[i].y;sig2=1;} } } else { int sum=0,j; for(j=i;j<stop;j++) { sum+=Da[j].x; } if(Da[i].y==0) { //判断输出是否为第一项,判断输出为正数还是负数,分别进行输出; if(sum>0&&i!=0&&sig2==1) {cout<<"+"<<sum;sig2=1;}

多项式加减法C++源码

if(sum>0&&i!=0&&sig2!=1) {cout<<sum;sig2=1;}

if(sum>0&&i==0) {cout<<sum;sig2=1;}

if(sum<0) {cout<<sum;sig2=1;}

}

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

{

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

if(sum>1&&i==0) {cout<<sum<<"x";sig2=1;}

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

if(sum==1&&i!=0&&sig2!=1) {cout<<"x";sig2=1;}

if(sum==1&&i==0) {cout<<"x";sig2=1;}

if(sum<-1) {cout<<sum<<"x";sig2=1;}

if(sum==-1) {cout<<"-"<<"x";sig2=1;}

}

else

{

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

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

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

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

}

}

i=stop;

}

if(sig2==0) cout<<"0";

cout<<endl;

return 0;

}

void run(string &a) //自定义函数的函数体

{

int b[100],i,j;

int sum1,sum2;

for(i=0;i<a.length();i++)

{

if(a[i]=='x') //以X为关键字进行搜索带有X的项

{

sum1=1;

int k=i;

多项式加减法C++源码

} } int w=0; if(a[i-1]=='-') sum1=-1; if(a[k-1]>='0'&&a[k-1]<='9') { sum1=0; while(a[k- …… 此处隐藏:2500字,全部文档内容请下载后查看。喜欢就下载吧 ……

多项式加减法C++源码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/2272324.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)