alskell 2022-05-18 16:16 采纳率: 100%
浏览 81
已结题

c++实现多项式乘法

题目大概要求如下:

img


自己写的出现了比较多的问题,数组大小没有定义,局限性很大,多项式个数多了会出现问题,#include
using namespace std;
int main()
{
int i, j, m, n,p[m],q[n],s[m+n]; //数组个数要搞清!易错点在这!
cout<<"输入第一行的个数:"; cin>>m;
cout<<"输入系数: ";
for (i = m-1; i >=0; i--) //为第一列系数
{
cin>>p[i];
}
cout<<"P(X)=";
for (i=m-1; i>=0; i--)
{
if(i==0) {cout<<p[i];break;}
cout<<p[i]<<"×X^"<<i<<"+";
}
cout<<"\n\n";
cout<<"输入第二行的个数:";cin>>n;
cout<<"输入系数: ";
for (i = n-1; i >=0; i--) //第二列系数
{
cin>>q[i];
}
cout<<"Q(X)=";
for (i=n-1; i>=0; i--)
{
if(i==0) {cout<<q[i];break;}
cout<<q[i]<<"×X^"<<i<<"+";
}
cout<<"\n\n";
for (i = m + n-2; i >=0; i--) //都是零
{s[i] = 0;}

for (i = m-1; i>=0; i--)
{
    for (j = n-1; j >=0; j--)
        {
            s[i + j] += p[i] * q[j];
        } 
} 
cout<<"它们乘积多项式:S(X)=";
for (i=m+n-2; i>=0; i--)    //输出所搞的 
{
     if(i==0){cout<<s[i];break;} 
      cout<<s[i]<<"×X^"<<i<<"+";
   
   }

}
希望有人可以帮忙解决题目问题,最好要有注释在函数后面。谢谢

  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-05-18 16:19
    关注

    给你重新写一个,可以把

    #include <iostream>
    using namespace std;
    void mulit_poly(int p[], int n1, int q[], int n2, int s[]);
    const int MAX_POLY = 20;
    int main() {
        int p[MAX_POLY], q[MAX_POLY], s[MAX_POLY * 2];
        int n1, n2;
        cin >> n1 >> n2;
        for (int i = n1 - 1; i >= 0; i--) {
            cin >> p[i];
        }
        for (int i = n2 - 1; i >= 0; i--) {
            cin >> q[i];
        }
        mulit_poly(p, n1, q, n2, s);
        bool first = true;
        for (int i = n1 + n2 - 1; i >= 0; i--) {
            if (s[i] != 0) {
                if (!first)
                    cout << "+";
                cout << s[i];
                if (i != 0)
                    cout << "x^" << i;
                first = false;
            }
        }
        return 0;
    }
    void mulit_poly(int p[], int n1, int q[], int n2, int s[]) {
        for (int i = 0; i < n1 + n2; i++) {
            s[i] = 0;
        }
        for (int i = 0; i < n1; i++) {
            for (int j = 0; j < n2; j++) {
                s[i + j] += p[i] * q[j];
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月18日
  • 已采纳回答 5月18日
  • 创建了问题 5月18日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?