iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现多项式相乘
  • 247
分享到

C++实现多项式相乘

2024-04-02 19:04:59 247人浏览 独家记忆
摘要

目录c++多项式相乘C++多项式的乘法和加法多项式的乘法和加法C++多项式相乘   #include <iOStream> using namespace

C++多项式相乘

在这里插入图片描述

 

在这里插入图片描述

在这里插入图片描述

#include <iOStream>
using namespace std;
int a[2][2]; //二维数组开的秒
int b[2][2];
int ans[25]; //用来存放系数,那么存放后所对应的下标就是指数
int main(){
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            cin >> a[i][j];
        }
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            cin >> b[i][j];
        }
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            ans[a[i][1] + b[j][1]] += a[i][0] * b[j][0];
            //幂次就是对应的下标
        } //累加的原因是,因为是两个相加的式子相乘,所以要合并幂次相同的项
    }
    for(int i = 20;i>=0;i--){
        if(ans[i] != 0){
            cout << ans[i] << " " << i << endl;
        }
    }
    return 0;
}

C++多项式的乘法和加法

多项式的乘法和加法

采用动态数组的方法

该方法较链式方法略微复杂

#include<iostream>
   using namespace std;
   //多项式的乘法和加法
   struct node{
    int coef;
    int exp;
   };
   
    //****排序****
 void  nodesort(node* pn,const int& count)
 {   if(count<=1) return;
  else{
  bool flag =false;
  for(int i=0;i<count-1&&!flag;++i){
   flag = true;
    for(int j=1;j<count-i;++j){
     node t;
   if(pn[j-1].exp<pn[j].exp) {
    t = pn[j];
    pn[j] = pn[j-1];
    pn[j-1] = t;
    flag = false;
   } 
    }
  } 
  }
 }
 
 //****输出**** 
   void print( node *s,const int& n)
   {   
   cout<<"*********output*********\n";
    for(int i=0;i<n;++i)
    {   if(i!=n-1)
     cout<*<s[i].coef<<"x^"<<s[i].exp<<" + ";
     else cout<<s[i].coef<<"x^"<<s[i].exp<<endl;
    }
    cout<<endl; 
 }
//****合并同类项****
 int nodemerge(node* s,const int& n ,const int& key=0){
  if(n<1) {cerr<<"数组大小有误\n";}
  if(n==1)return 1;
  if(n>1 && key==0){//排序并且合并 
   nodesort(s,n); 
   int count=0;
  for(int i=1;i<n;++i)
  {
   if(s[count].exp==s[i].exp){
    s[count].coef = s[count].coef + s[i].coef ;
    
   }
   else{
    s[++count] = s[i];
   }
  }
  return count+1; 
  }
  
  if(n>1&&key==1){//仅合并 
   //nodesort(s,n); 
   int count=0;
  for(int i=1;i<n;++i)
  {
   if(s[count].exp==s[i].exp){
    s[count].coef = s[count].coef + s[i].coef ;
    
   }
   else{
    s[++count] = s[i];
   }
  }
  return count+1; 
  }
 }   

//***计算多项式加法*** 
   void add(node* s,const int& m,node* a,const int& n)
       {
     node* newnode = new node[m+n];
     int i=0,j=0,temp=0;
     
     while(i<m && j<n){
      if(s[i].exp>a[j].exp){
       newnode[temp].coef = s[i].coef;
       newnode[temp].exp = s[i].exp;
       temp++;
       i++;
       
      }
      
    else if(s[i].exp<a[j].exp){
       newnode[temp].coef = a[j].coef;
       newnode[temp].exp = a[j].exp;
       temp++;
       j++;
       
      }
    else {
       newnode[temp].coef = a[j].coef+s[i].coef;
       newnode[temp].exp = a[j].exp;
       temp++;
       i++;
       j++;
      }
     }
    while(i<m)
    {
    newnode[temp].coef = s[i].coef;
      newnode[temp].exp = s[i].exp;
       temp++;
       i++; 
    }
  while(j<n)
    {
     newnode[temp].coef = a[j].coef;
       newnode[temp].exp = a[j].exp;
       temp++;
       j++;
    }
    
            temp = nodemerge(newnode,temp,1);
            cout<<"多项式加法\n";
     print(newnode,temp);
     delete[] newnode;
     return ;
     
 }

//***计算多项式乘法*** 
   void   multi(node* s,const int& m,node* a,const int& n)
 {
    node* pn = new node[m*n];
    int count = 0;
    for(int i=0;i<m;++i)
    {
     for(int j=0;j<n;++j){
      pn[count].coef = (s[i].coef) * (a[j].coef) ;
      pn[count].exp = s[i].exp + a[j].exp;
      count++;
     }
    }
  //***排序并且合并***
      count = nodemerge(pn,count,0);
      cout<<"多项式乘法\n";
      print(pn,count);
     delete[] pn;
     return ;
 }
 //****输入数据*****
 node* node_input(const int& n)
 {  
  node* seq = new node[n]; 
  for(int i=0;i<2*n;++i)
    { 
    
     if(i%2==0) cin>>seq[i/2].coef;
     else cin>>seq[i/2].exp;
   } 
   return seq;
 }  
  
    //***销毁****
 void delete_node(node*s){
  delete[] s;
 } 


//**测试**
 int main(){
    //m,n表示输入的节点个数
  //示例:3x^6+4x^4+x 输入的个数为3,每个节点分别为:3 6; 4 4; *1 *1 
    int m,n;
    int temp;
    node* seq1,*seq2;
    
    cout<<"input m value:";
       cin>>m;
       seq1 = node_input(m); 
       
       cout<<"input n value:";
       cin>>n;
       seq2 = node_input(n); 
     
      //***排序并且合并*** 
      m=nodemerge(seq1,m);
      n =nodemerge(seq2,n);
     
     //test
     print(seq1,m);
     print(seq2,n);
     multi(seq1,m,seq2,n);
     add(seq1,m,seq2,n);
     
     //delete
     delete_node(seq1);
     delete_node(seq2);
    return 0;
   }

样例测试输出

input m value:3
1 2
1 3
2 4
input n value:4
3 5
3 76
3 4
2 5
*********output*********
2x^4 + 1x^3 + 1x^2

*********output*********
3x^76 + 5x^5 + 3x^4

多项式乘法
*********output*********
6x^80 + 3x^79 + 3x^78 + 10x^9 + 11x^8 + 8x^7 + 3x^6

多项式加法
*********output*********
3x^76 + 5x^5 + 5x^4 + 1x^3 + 1x^2

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: C++实现多项式相乘

本文链接: https://www.lsjlt.com/news/165016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现多项式相乘
    目录C++多项式相乘C++多项式的乘法和加法多项式的乘法和加法C++多项式相乘   #include <iostream> using namespace...
    99+
    2024-04-02
  • C语言如何实现多项式相加
    这篇文章主要介绍“C语言如何实现多项式相加”,在日常操作中,相信很多人在C语言如何实现多项式相加问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言如何实现多项式相加”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • c语言怎么实现多项式相加
    在C语言中,可以通过定义一个多项式结构体来表示多项式,然后定义相应的函数来实现多项式的相加。首先,我们可以定义一个包含系数和指数的结...
    99+
    2023-08-18
    c语言
  • C++实现LeetCode(43.字符串相乘)
    [LeetCode] 43. Multiply Strings 字符串相乘 Given two non-negative integers num1 and...
    99+
    2024-04-02
  • C/C++如何实现两矩阵相乘之模拟法
    目录数学中两矩阵怎么相乘C/C++语言实现总结数学中两矩阵怎么相乘 矩阵相乘需要前面矩阵的列数与后面矩阵的行数相同方可相乘。 将前面矩阵的第i行各元素分别与后面矩阵的第j列相应位置元...
    99+
    2023-02-06
    c++两个矩阵相乘 C++矩阵相乘 c++矩阵运算
  • C语言怎么实现两个浮点数相乘
    本篇内容主要讲解“C语言怎么实现两个浮点数相乘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么实现两个浮点数相乘”吧!输入两个浮点数,计算乘积。实例#include <stdio....
    99+
    2023-06-17
  • C++实现对象化的矩阵相乘小程序
    复习数学1的线性代数,矩阵相乘这块有点晕,想编个C++对象化的矩阵相乘小程序。 相乘部分 void sum(juzhen a, juzhen b, juzhen &c) ...
    99+
    2024-04-02
  • C语言怎么实现多项式加减
    在C语言中,可以使用数组来表示多项式。数组的下标表示多项式的指数,数组的值表示多项式的系数。以下是一个示例代码,用于实现两个多项式的...
    99+
    2023-08-18
    C语言
  • php怎么实现两个数相乘
    这篇文章主要介绍“php怎么实现两个数相乘”,在日常操作中,相信很多人在php怎么实现两个数相乘问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么实现两个数相乘”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • php如何实现两个数相乘
    PHP是一种常用的服务器端脚本语言,可以用于开发各种 Web 应用程序。本文将介绍如何使用 PHP 实现两个数相乘的功能。在 PHP 中,可以使用 "*" 运算符来进行乘法计算。下面是一个简单的 PHP 程序,演示如何将...
    99+
    2023-05-14
    php
  • C语言与C++项目实现相互调用
    目录前言一、C++项目调用C的静态库二、C项目调用C++的静态库三、总结前言 extern “c”的作用可以实现c语言和c++相互调用。 1.当我们写c语言代...
    99+
    2024-04-02
  • 阶乘相关的算法及其C++实现的示例分析
    本篇文章为大家展示了阶乘相关的算法及其C++实现的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。C++中的阶乘亦是如此。有关阶乘的算法,不外乎...
    99+
    2023-06-17
  • R语言 实现矩阵相乘100次
    【D1 D2】2*1 【T1 T2】1*2 要求D1和D2随机的变动, 矩阵相乘100次 rm(list=ls()) gc() options(scipen = 2000) ##...
    99+
    2024-04-02
  • pytorch实现多项式回归
    pytorch实现多项式回归,供大家参考,具体内容如下 一元线性回归模型虽然能拟合出一条直线,但精度依然欠佳,拟合的直线并不能穿过每个点,对于复杂的拟合任务需要多项式回归拟合,提高精...
    99+
    2024-04-02
  • JS实现大数相加大数相乘示例详解
    目录JS大数相加、大数相乘一、实现两个大数相加二、实现两个大数相乘JS大数相加、大数相乘 JavaScript 只有一种数字类型,可以使用也可以不使用小数点来书写数字。 在 Java...
    99+
    2022-11-13
    JS大数相加相乘 JS大数
  • python中怎么利用numpy.matmul实现矩阵相乘
    这篇文章将为大家详细讲解有关python中怎么利用numpy.matmul实现矩阵相乘,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。说明该函数返回两个数组的矩阵乘积。虽然返回二维数组的正常乘...
    99+
    2023-06-20
  • pytorch tensor内所有元素相乘怎么实现
    这篇“pytorch tensor内所有元素相乘怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“pytorc...
    99+
    2023-07-02
  • C++实现加减乘除计算器
    本文实例为大家分享了C++实现加减乘除计算器的具体代码,供大家参考,具体内容如下 #include <iostream> #include <conio.h>...
    99+
    2024-04-02
  • pytorch如何实现多项式回归
    这篇文章主要为大家展示了“pytorch如何实现多项式回归”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“pytorch如何实现多项式回归”这篇文章吧。pytorch实现多项式回归,供大家参考,具...
    99+
    2023-06-14
  • Python如何实现多项式回归
    今天就跟大家聊聊有关Python如何实现多项式回归,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作