C++中实现矩阵的加法和乘法实例

 更新时间:2017年03月31日 16:46:17   作者:不见x的心  
这篇文章主要介绍了C++中实现矩阵的加法和乘法实例的相关资料,需要的朋友可以参考下

C++中实现矩阵的加法和乘法实例

实现效果图:

实例代码:

#include<iostream>
using namespace std;

class Matrix
{
  int row;//矩阵的行
  int col;//矩阵的列
  int **a;//保存二维数组的元素
public:
  Matrix();//默认构造函数
  Matrix(int r, int c);
  Matrix(const Matrix &is);//拷贝构造函数
  void Madd(const Matrix &is);//矩阵加
  Matrix Mmul(const Matrix &is);//矩阵乘
  void display();//显示矩阵元素
};

Matrix::Matrix(int r, int c)
{
  row = r;
  col = c;
  a = (int **)malloc(sizeof(int*)*row);
  for (int r = 0; r < row; r++)
  {
    *(a + r) = (int*)malloc(sizeof(int)*col);
  }
  printf("请输入数:\n");
  for (int i = 0; i < row; i++)
    for (int j = 0; j < col; j++)
      cin >> a[i][j];
}

Matrix::Matrix(const Matrix & is)
{//拷贝构造函数
  row = is.row;
  col = is.col;
  a = new int*[row];
  for (int i = 0; i < row; i++)
  {
    a[i] = new int[col];
  }
  a = is.a;
}

void Matrix::Madd(const Matrix & is)
{
  if (row != is.row || col != is.col)//判断两矩阵是否符合相加条件
  {
    cout << "相加的矩阵必须行和列一致";
  }
  else
  {
    for (int i = 0; i < row; i++)
    {
      for (int j = 0; j < col; j++)
      {
        a[i][j] += is.a[i][j];
      }
    }
  }
}

Matrix Matrix::Mmul(const Matrix & is)
{
  Matrix M3(this->row, is.col);
  if (this->col != is.row)//判断是否符合相乘条件
  {
    cout << "不符合两矩阵相乘的条件";
  }
  else
  {
    for (int i = 0; i < M3.row; i++)
    {
      for (int j = 0; j < M3.col; j++)
      {
        M3.a[i][j] = 0;
        for (int n = 0; n < is.row; n++)
        {
          M3.a[i][j] += this->a[i][n] * is.a[n][j];
        }
      }
    }
  }
  return M3;
}

void Matrix::display()
{//输出矩阵
  for (int i = 0; i < row; i++)
  {
    for (int j = 0; j < col; j++)
    {
      cout << a[i][j] << " ";
    }
    cout << endl;
  }
  cout << endl;
}

int main()
{
  Matrix m1(3, 3);
  m1.display();
  Matrix m2(3, 3);
  m2.display();
  Matrix m3(3, 2);
  m3.display();
  cout << "m1+m2=" << endl;
  m1.Madd(m2);
  m1.display();
  Matrix m4(m1.Mmul(m3));
  cout << "m1*m3=" << endl;
  m4.display();
  system("pause");
  return 0;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • c++查询最短路径示例

    c++查询最短路径示例

    这篇文章主要介绍了c++查询最短路径示例,需要的朋友可以参考下
    2014-05-05
  • C++小游戏tankwar之界面绘制的详细过程

    C++小游戏tankwar之界面绘制的详细过程

    最近没有项目做,空闲了下来,于是写了个c++小游戏来打发时间,下面通过本文基于图文并茂的形式给大家介绍C++小游戏tankwar之界面绘制的详细过程,感兴趣的朋友一起看看吧
    2021-05-05
  • C语言的常量,字符串,转义字符,注释你都了解吗

    C语言的常量,字符串,转义字符,注释你都了解吗

    这篇文章主要为大家详细介绍了C语言的常量,字符串,转义字符,注释,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C++中remove与erase区别小结

    C++中remove与erase区别小结

    remove函数和 erase函数都可以实现元素的删除,本文主要介绍了C++中remove与erase区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • C++深入分析回顾函数重载

    C++深入分析回顾函数重载

    C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading),借助重载,一个函数名可以有多种用途
    2022-06-06
  • 使用C语言提取子字符串及判断对称子字符串最大长度

    使用C语言提取子字符串及判断对称子字符串最大长度

    这篇文章主要介绍了使用C语言提取子字符串及判断对称子字符串最大长度,文后附送了一道ACM竞赛题目,需要的朋友可以参考下
    2015-08-08
  • C语言字符串函数,字符函数,内存函数使用及模拟实现

    C语言字符串函数,字符函数,内存函数使用及模拟实现

    这篇文章主要介绍了C语言字符串函数,字符函数,内存函数使用及模拟实现,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Qt QML使用虚拟键盘的示例代码

    Qt QML使用虚拟键盘的示例代码

    这篇文章主要为大家详细介绍了Qt QML使用虚拟键盘的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C语言使用单链表实现学生信息管理系统

    C语言使用单链表实现学生信息管理系统

    这篇文章主要为大家详细介绍了C语言使用单链表实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 基于Qt实现简易GIF播放器的示例代码

    基于Qt实现简易GIF播放器的示例代码

    这篇文章主要介绍了如何利用Qt设计一个简易GIF播放器,可以播放GIF动画。其基本功能有载入文件、播放、暂停、停止、快进和快退,感兴趣的可以了解一下
    2022-06-06

最新评论