多项式加减 List
来源:互联网 发布:java字符串切割 编辑:程序博客网 时间:2024/05/19 14:19
vector与list与dequeue有何区别
/* 多项式加法和乘法示例 */ #include <list> #include <iostream> #include <cassert> using namespace std; //定义多项式的项类 class term{ public: int coef; //多项式系数 int exp; //多项式指数 term( int c=0,int e=0):coef(c),exp(e){} }; //定义多项式类class PolyArith{private:list<term> m_poly_list_first; //存储第一个多项式 list<term> m_poly_list_second; //存储第二个多项式 list<term> m_poly_list_result; //用以存储运算结果 //多项式私有成员函数,用以乘法时的调用 list<term> Poly_add(list<term>& poly_list_first,list<term>& poly_list_second) { list<term> poly_list_result; //用以存储运算结果 list<term>::iterator iter_first = poly_list_first.begin(); list<term>::iterator iter_second = poly_list_second.begin();//该while循环针对两个链表迭代器都没有指到结尾的情形 while(iter_first != poly_list_first.end() && iter_second != poly_list_second.end()) {term t_temp; term t_first = (term)*iter_first; term t_second = (term)*iter_second; if(t_first.exp > t_second.exp) { poly_list_result.push_back(t_first); iter_first++; } else if(t_second.exp > t_first.exp) {poly_list_result.push_back(t_second); iter_second++; } else{t_temp.coef=t_first.coef+t_second.coef;t_temp.exp=t_first.coef;poly_list_result.push_back(t_temp); iter_first++; iter_second++; } } //该for循环针对第一个多项式的迭代器没有指到结尾 第二个指到结尾的情形for( ;iter_first != poly_list_first.end();iter_first++)poly_list_result.push_back(*iter_first); //该for循环针对第二个多项式的迭代器没有指到结尾 第一个指到结尾的情形 for( ;iter_second != poly_list_second.end();iter_second++)poly_list_result.push_back(*iter_second); return poly_list_result;}public://输入函数,用以输入多项式 void Poly_input() { int n; cout<<"请输入第一个多项式的项数:"<<endl;cin>>n; cout<<"按降幂输入第一个多项式的每一项的系数和指数:"<<endl;for(int i=1;i<=n;i++) {term t_temp; cout<<"请输入第"<<i <<"项系数和指数,以'enter'为界:";cout<<endl; cin>>t_temp.coef; cin>>t_temp.exp; m_poly_list_first.push_back(t_temp); } n = 0; cout<<"请输入第二个多项式的项数:"<<endl; cin>>n; cout<<"按降幂输入第二个多项式的每一项的系数和指数:";cout<<endl; for(int j=1;j<=n;j++) { term t_temp; cout<<"请输入第"<<j <<"项系数和指数,以'enter'为界:";cout<<endl;cin>>t_temp.coef; cin>>t_temp.exp; m_poly_list_second.push_back(t_temp); } }//输出函数,用以输出多项式 void Poly_output() {//用以指向输出多项式的第一个元素list<term>::iterator iter = m_poly_list_result.begin();//输出多项式的每一项for(;iter!=m_poly_list_result.end();) { term t_temp=*iter; cout<<t_temp.coef<<"x^"<<t_temp.exp; if(++iter!=m_poly_list_result.end()) cout<<"+"; } cout<<endl; } //加法函数,其基本思想同上边的私有成员函数Poly_add()此处不带参数,多项式运算对象为私有数据成员void Poly_add() { list<term>::iterator iter_first = m_poly_list_first.begin(); list<term>::iterator iter_second =m_poly_list_second.begin(); while(iter_first != m_poly_list_first.end()&&iter_second != m_poly_list_second.end()) { term t_temp; term t_first = (term)*iter_first; term t_second = (term)*iter_second; if(t_first.exp>t_second.exp) { m_poly_list_result.push_back(t_first); iter_first++; } else if(t_second.exp>t_first.exp) { m_poly_list_result.push_back(t_second); iter_second++; } else { t_temp.coef=t_first.coef+t_second.coef; t_temp.exp=t_first.exp;m_poly_list_result.push_back(t_temp); iter_first++; iter_second++; } } for(;iter_first != m_poly_list_first.end();iter_first++) m_poly_list_result.push_back(*iter_first); for(;iter_second != m_poly_list_second.end();iter_second++)m_poly_list_result.push_back(*iter_second); }//乘法函数,用以作多项式乘法 void Poly_multi() { list<term> poly_list_result; list<term>::iterator iter_first = m_poly_list_first.begin(); for(;iter_first!=m_poly_list_first.end();iter_first++) { list<term> poly_list_temp; //用以存储多项式的中间运算结果list<term>::iterator iter_second =m_poly_list_second.begin(); for(;iter_second!=m_poly_list_second.end();iter_second++) { term t_temp; //用以存储项的中间运算结果term t_first = (term)*iter_first; term t_second = (term)*iter_second;//此处实现多项式项的相乘t_temp.coef = t_first.coef*t_second.coef; //系数相乘 t_temp.exp = t_first.exp + t_second.exp; //指数相加poly_list_temp.push_back(t_temp); }//此处调用私有成员函数Poly_add()poly_list_result =Poly_add(poly_list_temp,poly_list_result); }//将运算结果赋值给私有数据成员,用以输出m_poly_list_result = poly_list_result;} }; //测试函数int main() { cout<<"************本程序实现多项式的加法与乘法************";cout<<endl;PolyArith poly_a; poly_a.Poly_input(); //输入多项式 poly_a.Poly_add(); //多项式加法 cout<<"多项式加法的运算结果:"<<endl;poly_a.Poly_output(); //输出多项式cout<<endl; poly_a.Poly_multi(); //多项式乘法 cout<<"多项式乘法的运算结果:"<<endl; poly_a.Poly_output(); system("pause"); return 0; }
有待修改
0 0
- 多项式加减 List
- 多项式加减
- 多项式加减乘运算
- 多项式的加减乘
- 多项式加减乘法
- 多项式之加减乘
- 多项式的加减
- 一元稀疏多项式加减
- 一元多项式加减
- 一元多项式的加减
- 数据结构-一元多项式加减程序
- Python实现多项式加减乘法
- Java 用单链表实现多项式加减乘
- 多项式加减乘除法算法实现
- 单链表模拟一元多项式加减乘运算
- 多项式加减运算—c语言描述
- 一元多项式的建立及加减
- 一元多项式的加减乘数实现
- Object方法
- java读取文件方法总结
- leetcode 1----twoSum
- 1019. 数字黑洞 (20)
- 杂文
- 多项式加减 List
- SQL语句做报表统计
- Cocos2dx -lua QuickXDev拓展
- 【第六章·图】思维导图
- 树网的核
- 黑马程序员——C语言基础1
- 解决系统改变字体大小的时候导致的界面布局混乱的问题
- 《富爸爸致富需要做的6件事》读书笔记
- Android 获取通讯录联系人信息