一元多项式的加法和乘法(C++)
一、多项式加法
1、通过键盘随即输入两个多项式P(x)和Q(x)的内容。
2、输出结果要有P(x)、Q(x)以及他们的和。
3、输入输出多项式的格式可自行定义。
#include <iostream> #include <map> using namespace std; int main() { //多项式相加 map<float,float> formula; //系数和指数数组 float coef,exp; int num; cout << "输入多项式P(x)的项数:"; cin >> num; for(int i=0;i<num;i++) { cout << "输入第" << i+1 << "项" << "的系数和指数(空格分开):"; cin >> coef >> exp; if(formula.count(exp) == 0) formula[exp] = coef; else formula[exp] += coef; } cout << "输入多项式Q(x)的项数:"; cin >> num; for(int i=0;i<num;i++) { cout << "输入第" << i+1 << "项" << "的系数和指数(空格分开):"; cin >> coef >> exp; if(formula.count(exp) == 0) formula[exp] = coef; else formula[exp] += coef; } map<float,float>::reverse_iterator iter; iter = formula.rbegin(); cout << "P(x)+Q(x)="; while(iter != formula.rend()) { if(iter != formula.rbegin()) cout << '+'; if(iter->first != 0 && iter->first != 1) cout << iter->second << 'x' << iter->first; else if(iter->first == 0) cout << iter->second; else cout << iter->second << 'x'; iter++; } cout << endl; return 0; }
运行结果:
二、多项式乘法
1、通过键盘随机输入两个多项式P(x)和Q(x)的内容。
2、输出结果要有P(x)、Q(x)以及他们的积。
3、输入输出多项式的格式可自行定义。
#include <iostream> #include <map> using namespace std; int main() { //多项式相乘 map<float,float> formula; //系数和指数数组 float coef,exp; int num1,num2; cout << "输入多项式P(x)的项数:"; cin >> num1; int p[num1][2]; for(int i=0;i<num1;i++) { cout << "输入第" << i+1 << "项" << "的系数和指数(空格分开):"; cin >> p[i][0] >> p[i][1]; } cout << "输入多项式Q(x)的项数:"; cin >> num2; int q[num2][2]; for(int i=0;i<num2;i++) { cout << "输入第" << i+1 << "项" << "的系数和指数(空格分开):"; cin >> coef >> exp; for(int j=0;j<num1;j++) { if(formula.count(exp+p[j][1]) == 0) formula[exp+p[j][1]] = coef*p[j][0]; else formula[exp+p[j][1]] += coef*p[j][0]; } q[i][0] = coef; q[i][1] = exp; } cout << "P(x)="; for(int i=0;i<num1;i++) { if(i != 0) cout << "+"; if(p[i][1] != 0) cout << p[i][0] << "x" << p[i][1]; else cout << p[i][0]; } cout << endl; cout << "Q(x)="; for(int i=0;i<num2;i++) { if(i != 0) cout << "+"; if(q[i][1] != 0) cout << q[i][0] << "x" << q[i][1]; else cout << q[i][0]; } cout << endl; map<float,float>::reverse_iterator iter; iter = formula.rbegin(); cout << "P(x)*Q(x)="; while(iter != formula.rend()) { if(iter != formula.rbegin()) cout << '+'; if(iter->first != 0 && iter->first != 1) cout << iter->second << 'x' << iter->first; else if(iter->first == 0) cout << iter->second; else cout << iter->second << 'x'; iter++; } cout << endl; return 0; }
运行结果: