可变大小矩阵 PTA C++ 练习

可变大小矩阵

完成一个矩阵类,能够存放二维数据,在构造函数中经过参数指定行数和列数,具备矩阵转置的功能和显示数据的功能。要求实现该矩阵类,使得主函数中的测试代码能够正确运行并获得正确的结果。ios

函数接口定义:

实现矩阵类函数

裁判测试程序样例:

/* 请在这里填写答案 */
int main(){
	int r,c;
	cin>>r>>c; 
	Matrix m(r,c); // 初始大小 2行3列 
	m.input();
	cout<<"datas before:"<<endl;
	m.show();
	m.transform();
	cout<<"datas after:"<<endl;
	m.show();
}

输入样例:

首先输入两个整数表明行数和列数,而后输入矩阵元素。测试

3 2 1 2 3 4 5 6spa

输出样例:

分别输出转置以前和以后的矩阵数据。例如:code

datas before:  1 2  3 4  5 6 datas after:  1 3 5  2 4 6orm

思路分析:

本质上就是对一个矩阵进行转置, 只不过用实现罢了.blog

参考代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#define a 2262
using namespace std;
class Matrix{
public:
    double b;   
    double c;
    int d[a][a];
    Matrix(int e, int f){ b = e;c = f;}
    void show(){
        for(int g = 0; g < b; g++){
            for(int h = 0; h < c; h++){
                cout << " " << d[g][h];
            } cout << "\n";
        }
    }  
    void input(){ for(int i = 0; i < b; ++i){ for(int j = 0; j < c; ++j){cin >> d[i][j];}}}   
    void transform(){
        int x[10][10];
        for(int k = 0; k < b; ++k){
            for(int l = 0; l < c; ++l){ x[l][k] = d[k][l];}
        }
        for(int i = 0; i < c; ++i){
            for(int j = 0; j < b; ++j){ x[j][i] = d[i][j]; }
        } int z = c; c = b; b = z; }    
};

运行结果:

结果

复盘:

不少朋友和我说提交结果不对, 请注意我选择的编译器(C++11), 不要拿 C 的编译器, 更有甚者拿 Java 编译器问我为啥编译错误.接口

若是有其余问题, 欢迎下方留言, 看到全力解决.ci

相关文章
相关标签/搜索