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算法题思路和实例
