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]; } } } }
下一篇:
面试java算法题思路和实例