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

时间:2020-02-28 20:55:54   收藏:0   阅读:1363

可变大小矩阵

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

函数接口定义:

实现矩阵类

裁判测试程序样例:

/* 请在这里填写答案 */
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 6

输出样例:

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

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

思路分析:

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

参考代码:

#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 编译器问我为啥编译错误.

如果有其他问题, 欢迎下方留言, 看到全力解决.

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!