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

  

运行结果:

 

posted @ 2021-03-25 16:50  梵蒂冈宝石  阅读(708)  评论(0编辑  收藏  举报