【C++小白成长撸】--矩阵乘法程序

矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分。

矩阵乘法的原理:

矩阵乘法在代码中实现

得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加上是二维数组,再加一个for循环

以下呈现出代码

 1 /*程序的版权和版本声明部分:
 2 **Copyright(c) 2016,电子科技大学本科生二年级学生
 3 **All rights reserved.
 4 **文件名:矩阵乘法
 5 **程序作用:矩阵乘法
 6 **作者:Amoshen
 7 **完成日期:2016.10.26
 8 **版本号:V1.0
 9 */
10 #include <iostream>
11
12 using namespace std;
13 #define MAX_SIZE 10
14
15 int main(void)
16 {
17     int i = 0,j = 0,m = 0,NumOfRowA,NumOfColA,NumOfColB,s = 0;//i为第一矩阵(A)的行变量,j为第一矩阵的列变量,同时为第二矩阵的列变量,m为第二矩阵(B)的列变量
18     int a[MAX_SIZE][MAX_SIZE],b[MAX_SIZE][MAX_SIZE],c[MAX_SIZE][MAX_SIZE];//MAX_SIZE为二维数组最大值。因为二维数组不能长度不能为变量,所以找个最大值(如果各位有什么其他解决这个问题,请指教)
19
20     cout << "输入的行列数均不能大于10!!!!" <<endl;
21
22     cout << "请输入A矩阵相关信息:"<<endl;
23     cout <<"行 NumOfRowA = ";
24     cin >> NumOfRowA;
25     cout <<"列 NumOfColA = ";
26     cin >> NumOfColA;
27
28     cout << "请输入B矩阵相关信息:"<<endl;
29     cout <<"列 NumOfColB = ";
30     cin >> NumOfColB;
31     //用户自定义矩阵元素
32     cout << "请输入A矩阵的元素"<<endl;
33
34     for(i = 0;i < NumOfRowA;i++)
35     {
36         for(j = 0;j < NumOfColA;j++)
37         {
38             cin >> a[i][j];
39         }
40     }
41
42     cout << "请输入B矩阵的元素"<<endl;
43
44     for(j = 0;j < NumOfColA;j++)
45     {
46         for(m = 0;m < NumOfColB;m++)
47         {
48             cin >> b[j][m];
49         }
50     }
51     //矩阵乘法的实现
52     for(i = 0;i < NumOfRowA;i++)
53     {
54         for(m = 0;m < NumOfColB;m++)
55         {
56             for(j = 0;j < NumOfColA;j++)
57             {
58                 s = s + a[i][j] * b[j][m];
59             }
60             c[i][m] = s;
61             s = 0;
62         }
63     }
64
65     cout << "矩阵乘法的结果:" <<endl;
66     //输出矩阵结果
67     for(i = 0; i < NumOfRowA;i++)
68     {
69         for(j = 0;j < NumOfColB;j++)
70         {
71             cout << c[i][j] <<"\t";
72         }
73         cout << endl;
74     }
75
76     return 0;
77 }
时间: 2024-10-14 00:59:21

【C++小白成长撸】--矩阵乘法程序的相关文章

【C++小白成长撸】--(续)单偶数N阶魔方矩阵

1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生 3 **All rights reserved. 4 **文件名:单偶数N阶魔方矩阵 5 **程序作用:单偶数N阶魔方矩阵 6 **作者:Amoshen 7 **完成日期:2016.11.2 8 **版本号:V1.0 9 */ 10 #include<iostream> 11 12 using namespace std; 13 14 #define MAX_SIZE 100 15 16 int

【C++小白成长撸】--N阶幻方(魔阵)矩阵

解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时候,必须把这个矩阵看成是回绕的. 代码中,为了判断,当前位置是否有元素,我引入与魔方矩阵规模相同的另一个矩阵,如果魔方矩阵一个位置不为空,相应另一个矩阵那个位置为1,否则为0. 1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生 3 **All rig

【C++小白成长撸】--(续)双偶数N阶魔阵

原理: 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4) 每个魔阵的对角线都标为"-1",其余位置标为"0" 从第一个位置(a[0][0])从左到右,从上到下(例如:a[0][0],a[0][1]--a[0][3],a[1][0])用自然数(从1开始)依次填充,每次填充数加一,遇到-1,跳过,但自然数继续计数 当第三步全部完成后,从最下面一个位置(a[3][3]),从右到左,从下到上,计数从1开始,每次填充数加一,遇到填充了的位置,跳过,但自然数继续计数.

【小白成长撸】--循环顺序队列

1 // 循环顺序队列.cpp : 定义控制台应用程序的入口点. 2 //适合整数 3 4 #include "stdafx.h" 5 #include<stdio.h> 6 7 #define MAXNUM 100 8 #define true 1 9 #define false 0 10 11 typedef struct queue_type 12 { 13 int queue[MAXNUM];//队列的最大值为100 14 int front;//头指针 15 in

【ACM小白成长撸】--贪婪法解硬币找零问题

question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推. 1 /*程序的版权和版本声明部分: 2 **从<C++程序设计思想与方法>(作者:翁惠玉)P61转载 3 */ 4 #include <iostream> 5 6 using namespace std; 7 8 #define ONEFEN 1 9 #defin

【小白成长撸】--Fibonacci

1 /*程序的版权和版本声明部分: 2 *Copyright(c) 2016,电子科技大学本科生 3 *All rights reserved. 4 *文件名:Fibonacci 5 *程序作用:计算菲薄拉稀数列 6 *作者:Amoshen 7 *完成日期:2016.9.28 8 *版本号:V1.0 9 */ 10 #include<stdio.h> 11 12 int main(void) 13 { 14 int f1 = 1,f2 = 1,f3,n = 1,k; 15 16 printf(

【小白成长撸】--多项式求圆周率PI

1 /*程序的版权和版本声明部分: 2 *Copyright(c) 2016,电子科技大学本科生 3 *All rights reserved. 4 *文件名:多项式求PI 5 *程序作用:计算圆周率PI 6 *作者:Amoshen 7 *完成日期:2016.9.28 8 *版本号:V2.0 9 */ 10 11 #include<stdio.h> 12 13 int main(void) 14 { 15 double pi = 0.0,i = 1.0;//pi/4 = 1 - 1/3 + 1

【小白成长撸】--链栈(C语言版)

1 // 链栈.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <stdio.h> 6 #include <stdlib.h>//malloc的头文件 7 8 typedef struct line_stack//栈包装 9 { 10 int x; 11 struct line_stack *next; 12 }link; 13 14 void pushes(link **top, int

【ACM小白成长撸】--计算单词个数

我判断单词个数的方法,根据空格‘ ’的个数 分情况 当没有单词的时候 判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空格字符,才能判断一个word 注意事项: 当输入组数时,最后回车输入缓冲区里面,gets会得到一个回车符号,所以为了消除缓冲区的回车,需要利用fflush函数 当遇到最后一个‘\0’时,要在已有的words数目上加一,比如,"i love you",这儿有2个空格,不加一的话,words数