一元多项式的加法和乘法(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;
}
运行结果:


浙公网安备 33010602011771号