【C++小白成长撸】--矩阵乘法程序
矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分。
矩阵乘法的原理:

矩阵乘法在代码中实现
得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加上是二维数组,再加一个for循环
以下呈现出代码
/*程序的版权和版本声明部分:
**Copyright(c) 2017,电子科技大学本科生三年级学生
**All rights reserved.
**文件名:矩阵乘法
**程序作用:矩阵乘法
**作者:Amoshen
**完成日期:2016.10.26 更新日期:2017.11.29
**版本号:V2.0
*/
#include <iostream>
using namespace std;
#define MAX_SIZE 10
int main(void)
{
int i = 0, j = 0, m = 0, NumOfRowA, NumOfColA, NumOfColB, s = 0;//i为第一矩阵(A)的行变量,j为第一矩阵的列变量,同时为第二矩阵的列变量,m为第二矩阵(B)的列变量
int a[MAX_SIZE][MAX_SIZE], b[MAX_SIZE][MAX_SIZE], c[MAX_SIZE][MAX_SIZE];//MAX_SIZE为二维数组最大值。因为二维数组不能长度不能为变量,所以找个最大值(如果各位有什么其他解决这个问题,请指教)
cout << "输入的行列数均不能大于10!!!!" << endl;
cout << "请输入A矩阵相关信息:" << endl;
cout << "行 NumOfRowA = ";
cin >> NumOfRowA;
cout << "列 NumOfColA = ";
cin >> NumOfColA;
cout << "请输入B矩阵相关信息:" << endl;
cout << "由于矩阵乘法,前矩阵的列数必须等于后矩阵的行数,故B矩阵只需输入列数" << endl;
cout << "列 NumOfColB = ";
cin >> NumOfColB;
//用户自定义矩阵元素
cout << "输入方式:1 0 0 0 1 0 0 0 1" << endl << "代表:" << endl << "1 0 0\n0 1 0\n0 0 1\n";
cout << "请输入A矩阵的元素" << endl;
for (i = 0; i < NumOfRowA; i++)
{
for (j = 0; j < NumOfColA; j++)
{
cin >> a[i][j];
}
}
cout << "请输入B矩阵的元素" << endl;
for (j = 0; j < NumOfColA; j++)
{
for (m = 0; m < NumOfColB; m++)
{
cin >> b[j][m];
}
}
//矩阵乘法的实现
for (i = 0; i < NumOfRowA; i++)
{
for (m = 0; m < NumOfColB; m++)
{
for (j = 0; j < NumOfColA; j++)
{
s = s + a[i][j] * b[j][m];
}
c[i][m] = s;
s = 0;
}
}
cout << "矩阵乘法的结果:" << endl;
//输出矩阵结果
for (i = 0; i < NumOfRowA; i++)
{
for (j = 0; j < NumOfColB; j++)
{
cout << c[i][j] << "\t";
}
cout << endl;
}
return 0;
}
【C++小白成长撸】--矩阵乘法程序的更多相关文章
- 【C++小白成长撸】--(续)单偶数N阶魔方矩阵
1 /*程序的版权和版本声明部分: **Copyright(c) 2016,电子科技大学本科生 **All rights reserved. **文件名:单偶数N阶魔方矩阵 **程序作用:单偶数N阶魔 ...
- 【C++小白成长撸】--N阶幻方(魔阵)矩阵
解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时 ...
- 【C++小白成长撸】--(续)双偶数N阶魔阵
原理: 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4) 每个魔阵的对角线都标为"-1",其余位置标为"0" 从第一个位置(a[0][0])从左到右,从 ...
- 【ACM小白成长撸】--贪婪法解硬币找零问题
question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二 ...
- 【小白成长撸】--Fibonacci
/*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:Fibonacci *程序作用:计算菲薄拉稀数列 *作者 ...
- 【ACM小白成长撸】--计算单词个数
我判断单词个数的方法,根据空格‘ ’的个数 分情况 当没有单词的时候 判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空 ...
- 【小白成长撸】--多项式求圆周率PI
/*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:多项式求PI *程序作用:计算圆周率PI *作者:Amo ...
- 【小白成长撸】--链栈(C语言版)
// 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
随机推荐
- Vue项目搭建完整剖析全过程
Vue项目搭建完整剖析全过程 项目源码地址:https://github.com/ballyalex 有帮助的话就加个星星呗~! 项目技术栈:vue+webpack+bower+sass+axios ...
- ++i,i++和i += 1的区别
++i,i++和i += 1的区别 单条语句:i++;.++i;和 i += 1;等价. int i = 0; ++i; // 或者i++;或者i += 1; cout << i < ...
- Ubuntu下安装codeblocks
ubuntu 16.04LTS 下Code::Blocks 16.01 安装 Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件. ...
- annotation-config, annotation-driven, compont-scan 区别
<annotaion-driven/>标签: 这个标签对应的实现类是org.springframework.web.servlet.config.AnnotationDrivenBeanD ...
- 从.net到java,记录下这三个月的工作
从事.NET开发已经4个年头,经过十余个项目的学习与沉淀,终于有了一套自己熟悉并且相对完善的技术体系,面对未知,不再惧怕.期间完成并广泛用于公司项目的作品包括: abp的二次开发框架BodeAbp 基 ...
- hdu--1798--Doing Homework again(贪心)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Eclipse中tomcat配置
配置这两个东西 tomcat,在eclipse中启动 tomcat 才会可以访问 来自为知笔记(Wiz)
- 链接样式L-O-H-A
伪类可以链接起来使用,即不用在乎顺序 :link{color:blue;} :visited{color:purple;} :link:hover{color:red;} :visited:hover ...
- angular学习(六)-- Filter
2.6 过滤器:Filter 内置过滤器 currency number date json uppercase lowercase orderBy limitTo filter 自定义过滤器
- 【NO.1】Jmeter-安装JDK- 配置Jmeter运行的环境 - 是使用Jmeter的前提
本篇文档是描述:当我们遇到没有安装JDK的Windows系统的电脑.Linux系统的电脑的时候,该怎么来安装JDK. 如果你不安装JDK,那么就没办法开始使用Jmeter. JDK下载地址 http: ...