想用C艹OOP思想写,但是全都RE了TAT,求救!!!
查看原帖
想用C艹OOP思想写,但是全都RE了TAT,求救!!!
871681
runwei1203楼主2023/1/11 11:38

测试样例是正确的,我自己也再试了别的矩阵,都是对的呀,但不知道为什么后台样例全都Runtime Error

#include <iostream>
using namespace std;

class Matrix
{
private:
	int row;
	int col;
	int** matrix;
public:
	Matrix(int crow, int ccol) {
		this->row = crow;
		this->col = ccol;
		matrix = new int* [row];
		for (int i = 0; i < row; i++) {
			matrix[i] = new int[col];
		}
		for (int i = 0; i < row; i++) {
			for (int j = 0; j < col; j++) {
				matrix[i][j] = 0;
			}
		}
	}
	Matrix(int crow, int ccol, int** arr) {
		this->row = crow;
		this->col = ccol;
		matrix = new int* [row];
		for (int i = 0; i < row; i++) {
			matrix[i] = new int[col];
		}
		for (int i = 0; i < row; i++) {
			for (int j = 0; j < col; j++) {
				matrix[i][j] = arr[i][j];
			}
		}
	}
	Matrix& transposition() {
		int nrow = this->col;
		int ncol = this->row;
		Matrix temp(nrow, ncol);
		for (int i = 0; i < nrow; i++) {
			for (int j = 0; j < ncol; j++) {
				temp.matrix[i][j] = this->matrix[j][i];
			}
		}
		return temp;
	}
	void show() {
		for (int i = 0; i < row; i++) {
			for (int j = 0; j < col; j++) {
				cout << matrix[i][j] << " ";
			}
			cout << endl;
		}
	}
};

int main() {
	int n = 0, m = 0;
	cin >> n >> m;
	int** arr = new int* [n];
	for (int i = 0; i < n; i++) {
		arr[i] = new int[m];
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> arr[i][j];
		}
	}
	Matrix mtx(n, m, arr);
	Matrix mtx1(m, n);
	mtx1 = mtx.transposition();
	mtx1.show();
	return 0;
}
2023/1/11 11:38
加载中...