#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. JS获取滚动条距离顶部高度

    一.jQuery获取的相关方法 jquery 获取滚动条高度 获取浏览器显示区域的高度 : $(window).height(); 获取浏览器显示区域的宽度 : $(window).width(); ...

  2. Ubuntu中使用dnw工具:没有找到/dev/secbulk0

    Ubuntu中使用dnw动机: 一. 之前没有用ubuntu中的dnw,想试试. 二. 因为换了win10系统,怕搞不定win10中dnw的驱动,想着在ubuntu中不用禁用数字签名啥的比较省心.(事 ...

  3. Linux安装Tomcat7

    linux版本:CentOS 6.2 iso文件下载地址:http://mirrors.163.com/centos/6.2/isos/i386/CentOS-6.2-i386-bin-DVD1.is ...

  4. C语言对函数操作的结果声明

    可以用来返回给调用者函数操作的状态值. /* 这是一份关于函数返回值定义的头文件. */ #ifndef _STATUS_H_ #define _STATUS_H_ #define STATUS in ...

  5. [TFRecord文件格式]基本介绍

    标准TensorFlow格式 TFRecords 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords可以允许你讲任意的数据转换为TensorFlow所支持的格式, 这种方法可以 ...

  6. windows上搭建svn 、 Eclipse上安装svn插件 、 eclipse中如何使用svn

    折腾了许久终于搞出来了. svn搭建 一.svn概述 SVN就是用于多个人共同开发同一个项目,共用资源的目的,该文描述了把svn搭建在本地上,和搭建在Eclipse4.5.2上. 二.svn分类 分为 ...

  7. bootstrap select2 使用简单介绍

    1. 基本属性配置: $("#select2-id").select2({ templateResult : formatState, // 列表带图片 templateSelec ...

  8. fatal error C1083:无法打开包括文件:“stdint.h”: No such file or directory解决方案

    stdint.h文件是C99的标准头文件,默认情况下VC是不支持的,所以在使用过程中肯定会碰到 "No such file or directory"的问题. 解决办法 1.从网盘 ...

  9. Python数据结构之一——list(列表)

    Python版本:3.6.2  操作系统:Windows   作者:SmallWZQ Python包含6种常见的内建序列.它们分别是列表.元祖.字符串.Unicode字符串.buffer(memory ...

  10. 洛谷P2286 [HNOI2004]宠物收养场【Treap】题解+AC代码

    题目传送门啦~啦~啦~ 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...