您的位置:首页 > 理论基础 > 数据结构算法

数据结构——矩阵及其常用操作

2017-12-19 13:04 357 查看
/************************
author's email:wardseptember@gmail.com
date:2017.12.19
************************/
//矩阵常用操作
#include<iostream>
using namespace std;
#define maxSize 4
void trsmat(int A[][maxSize], int B[][maxSize], int m, int n);
void addmat(int C[][maxSize],int A[][maxSize], int B[][maxSize], int m, int n);
void mutmat(int C[][maxSize], int A[][maxSize], int B[][maxSize], int m, int n,int k);
int main() {
int a[][maxSize] = {
{1,3,5,6},
{4,8,7,2},
{11,15,7,8},
{14,17,21,7}

};
int b[][maxSize] = {
{12,16,78,45},
{4,15,13,14},
{17,16,21,24},
{16,13,48,49}
};
int C[maxSize][maxSize] = { 0 };
int m = maxSize;
int n = maxSize;

cout << "转置前的矩阵:" << endl;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cout << a[i][j] << '\t';
}
cout << endl;
}

cout << "矩阵的转置:" << endl;
trsmat(a, b, maxSize, maxSize);

cout << "两个矩阵相加:" << endl;
addmat(C, a, b, maxSize, maxSize);

cout << "两个矩阵相乘:" << endl;
mutmat(C, a, b, maxSize, maxSize, maxSize);
return 0;
}

//矩阵装置
void trsmat(int A[][maxSize], int B[][maxSize], int m, int n) {
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
B[j][i] = A[i][j];
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j){
cout << B[i][j] << '\t';
}
cout << endl;
}

}

//两个矩阵相加,相减把+改为-
void addmat(int C[][maxSize], int A[][maxSize], int B[][maxSize], int m, int n) {
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
C[i][j] = A[i][j] + B[i][j];
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cout << C[i][j] << '\t';
}
cout << endl;
}
}

//两个矩阵相乘
void mutmat(int C[][maxSize], int A[][maxSize], int B[][maxSize], int m, int n, int k) {
for (int i = 0; i < m; ++i)
for (int j = 0; j < k; ++j)
{
C[i][j] = 0;
for (int h=0; h < n; ++h)
C[i][j] += A[i][h] * B[h][j];
}
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cout << C[i][j] << '\t';
}
cout << endl;
}
}


以上如有错误请指出,大家共同学习进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 矩阵