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

来源:互联网 发布:windows开机启动后黑屏 编辑:程序博客网 时间:2024/05/20 21:43
/************************author's email:wardseptember@gmail.comdate:2017.12.19************************///矩阵常用操作#include<iostream>using namespace std;#define maxSize 4void 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;    }}

以上如有错误请指出,大家共同学习进步。