#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 Set();//输入矩阵元素
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 = ; r < row; r++)
{
*(a + r) = (int*)malloc(sizeof(int)*col);
}
} Matrix::Matrix(const Matrix & is)
{//拷贝构造函数
row = is.row;
col = is.col;
a = new int*[row];
for (int i = ; i < row; i++)
{
a[i] = new int[col];
}
a = is.a;
} void Matrix::Set()
{
printf("请输入数:\n");
for (int i = ; i < row; i++)
for (int j = ; j < col; j++)
cin >> a[i][j];
} void Matrix::Madd(const Matrix & is)
{
if (row != is.row || col != is.col)//判断两矩阵是否符合相加条件
{
cout << "相加的矩阵必须行和列一致";
}
else
{
for (int i = ; i < row; i++)
{
for (int j = ; 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 = ; i < M3.row; i++)
{
for (int j = ; j < M3.col; j++)
{
M3.a[i][j] = ;
for (int n = ; n < is.row; n++)
{
M3.a[i][j] += this->a[i][n] * is.a[n][j];
}
}
}
}
return M3;
} void Matrix::display()
{//输出矩阵
for (int i = ; i < row; i++)
{
for (int j = ; j < col; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
} int main()
{
Matrix m1(, );
m1.Set();
m1.display();
Matrix m2(, );
m2.Set();
m2.display();
Matrix m3(, );
m3.Set();
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 ;
}

运行结果:

定义一个Matrix类,实现矩阵的加法和乘法的更多相关文章

  1. 实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积

    (1)定义一个形状类(Shape)方法:计算周长,计算面积子类:矩形类(Rectangle) :额外的方法:differ() 计算长宽差圆形类(Circle)三角形类(Triangle)正方形类(Sq ...

  2. 定义一个Rectangle类,该类提供getLength和getWidth方法。

    import java.util.Comparator; /** * 定义一个Rectangle类,该类提供getLength和getWidth方法.利用图1-18中的findMax例程编写 * 一种 ...

  3. java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积

    需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法pri ...

  4. 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1

    题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...

  5. Java初学者作业——定义一个计算器类, 实现计算器类中加、 减、 乘、 除的运算方法, 每个方法能够接收2个参数。

    返回本章节 返回作业目录 需求说明: 定义一个计算器类, 实现计算器类中加. 减. 乘. 除的运算方法, 每个方法能够接收2个参数. 实现思路: 定义计算器类. 定义计算器类中加.减.乘.除的方法. ...

  6. 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception

    异常体系结构 概念 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类. 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Erro ...

  7. C++:如何正确的定义一个接口类

    C++中如何定义接口类?首先给接口类下了定义:接口类应该是只提供方法声明,而自身不提供方法定义的抽象类.接口类自身不能实例化,接口类的方法定义/实现只能由接口类的子类来完成. 而对于C++,其接口类一 ...

  8. 144、Java链表之定义一个Node类并输出

    01.代码如下: package TIANPAN; class Node { // 每一个链表实际上就是由多个节点组成的 private String data; // 要保存的数据 private ...

  9. 065、Java面向对象之定义一个Book类,在主类中使用Book类

    01.代码如下: package TIANPAN; class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 public ...

随机推荐

  1. Shader 入门笔记(一)

    本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的s ...

  2. sed,n,N,d,D,p,P,h,H,g,G,x,解析

    原文地址 这篇文章主要是我参考命令的,直接复制粘贴,有问题请拍砖 A. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 B. p打印当前模式空间所有 ...

  3. Ajax发送数据

  4. html的标签

    <a>:anchor 定义锚 <abbr>:abbreviation 定义缩写 <acronym>: 定义只取消首字母的缩写 <address>:定义地 ...

  5. 关于define和const

    1.通过define定义的常量,在C语言里面一般叫宏定义.define的本质是简单的文本替换. 2.const定义一个变量,但是这个变量的值只能在定义的时候赋予,之后就不能被更改了. 如果变量声明中带 ...

  6. VLAN 模式下的 OpenStack 管理 vSphere 集群方案

    本文不合适转载,只用于自我学习. 关于为什么要用OpenStack 管理 vSphere 集群,原因可以有很多,特别是一些传统企业,VMware 的使用还是很普遍的,用 OpenStack 纳管至少会 ...

  7. SQL Server判断小数位数

    项目中需要写一规则,目的是判断数值的小数位数,可以分为2中情况. 1.直接以小数点为分界点,小数点后的数据表示小数的位数,此种情况比较简单,直接使用CHARINDEX函数就可以搞定 其中CHARIND ...

  8. MP4大文件虚拟HLS分片技术,避免服务器大量文件碎片

    MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议 ...

  9. CentOS6.9编译安装nginx1.4.7

    1.系统安装开发包组和zlib-devel,关闭iptables [root@bogon ~]# yum groupinstall -y "Development Tools" [ ...

  10. [Uva10294]Arif in Dhaka

    [Uva10294]Arif in Dhaka 标签: 置换 Burnside引理 题目链接 题意 有很多个珠子穿成环形首饰,手镯可以翻转和旋转,项链只能旋转.(翻转过的手镯相同,而项链不同) 有n个 ...