C/C++实现矩阵的基本操作

现在存在一个小问题,只能操作n×n的矩阵,不能操作n×m的矩阵。在main函数中传参时会报错。

时间有限,不想死磕语法细节,待日后有时间再解决。如果有大佬看到了,希望可以指点一下,感激不尽。

#include <iostream>

using namespace std;

#define line 3
#define column 3
#define MAXSIZE 3

bool Transpose(int A[][MAXSIZE], int B[][MAXSIZE], int m, int n);

void Fill_up(int A[][MAXSIZE], int m, int n);

void show(int A[][line], int m, int n);

void addMatrixM(int A[][MAXSIZE], int B[][MAXSIZE], int C[][MAXSIZE], int m, int n);

void multiplyMatrix(int A[][MAXSIZE], int B[][MAXSIZE], int C[][MAXSIZE], int m, int n, int k);//A[m][n] * B[n][k]

int main() {
          
   
    int tra[line][column];
    Fill_up(tra, line, column);
    cout << endl << "after filling: " << endl;
    show(tra, line, column);
    cout << endl;

    int result[column][line];
    Transpose(tra, result, line, column);
    cout << "transpose: " << endl;
    show(result, column, line);

    int sum[line][column];
    addMatrixM(tra, result, sum, line, column);
    cout << endl << "sum: " << endl;
    show(sum, line, column);

    multiplyMatrix(tra, sum, result, line, column, column);
    cout << endl << "after multiply(tra * sum) : " << endl;
    show(result, line, column);

    return 0;
}

bool Transpose(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];
        }
    }

    return true;
}

void Fill_up(int A[][MAXSIZE], int m, int n) {
          
   
    cout << "please input " << m * n << " numbers: ";

    for (int i = 0; i < m; ++i) {
          
   
        for (int j = 0; j < n; ++j) {
          
   
            cin >> A[i][j];
        }
    }
}

void show(int A[][line], int m, int n) {
          
   

    for (int i = 0; i < m; ++i) {
          
   
        for (int j = 0; j < n; ++j) {
          
   
            cout << A[i][j] << "	";
        }
        cout << endl;
    }
}

void addMatrixM(int A[][MAXSIZE], int B[][MAXSIZE], int C[][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];
        }
    }
}

void multiplyMatrix(int A[][MAXSIZE], int B[][MAXSIZE], int C[][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 l = 0; l < n; ++l) {
          
   
                C[i][j] = A[i][l] * B[l][j];
            }
        }
    }
}
经验分享 程序员 微信小程序 职场和发展