#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. MySQL刷新事务日志级别设置

    标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 # if set to 1 , InnoDB will flush (fsync ...

  2. APP测试(转载)

    (1) 非功能测试 app测试的一个重要方面是app的非功能需求.移动app在推出市场或进行进一步开发前,测试人员有一定的职责做该类需求的跟踪工作. 早期开发阶段要进行的第一个测试应该是实用性测试.通 ...

  3. 使用postMessage实现跨域 解决'Failed to execute 'postMessage' on 'DOMWindow''

    使用iframe+postMessage解决跨域问题,首先来过一遍其中的原理咯 原理: 发送方使用postMessage方法向接收方推送消息,第一个参数为推送的内容,第二个参数是允许被访问的域名: 接 ...

  4. Spring-shiro源码陶冶-DelegatingFilterProxy和ShiroFilterFactoryBean

    阅读源码有助于陶冶情操,本文旨在简单的分析shiro在Spring中的使用 简单介绍 Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能 web.xml配置Shiro环 ...

  5. selenium打开chrome浏览器代码

    import os from selenium import webdriver chromedriver = "C:\Program Files (x86)\Google\Chrome\A ...

  6. 《Thinking in Java》学习笔记(六)

    1.Class相关知识 Class类可以理解为类的图纸,通过Class类可以分析类的结构.构建出类的实例. Class.forName("test.TestClass").newI ...

  7. POJ 3348 Cows [凸包 面积]

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9022   Accepted: 3992 Description ...

  8. IT连创业系列:年终回顾录!

    一年不过一转眼,一光阴的青春又逝去了! 还有不到几天,就要进入新年快乐的祝福包围圈了. 在这归家之际,留文一篇,为这忙碌的一年创业留点回忆! IT连创业这一年走来: 大大小小的深坑,小小大大的困难,一 ...

  9. Microsoft Visual Studio 中出现 Windows has triggered a breakpoint in xxx.exe的一个解决方案

    今天在用VS发布Release版本的过程中,碰到了一个问题,就是程序编译没有问题,但是在运行过程中出现了 根据经验,此类问题一般都是由于程序开发过程中的代码编写不规范导致内存写覆盖或者是使用了不同版本 ...

  10. selenium headlesschrome下设置最大窗口模式

    做微博登录的时候,用selenium的chrome界面模式,可以用下面方式显示最大窗口: from selenium.webdriver.chrome.options import Options c ...