码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-02-28 20:55:54      阅读:1363      评论:0      收藏:0      [点我收藏+]

标签:data   define   ace   cout   image   参数   std   初始   朋友   

可变大小矩阵

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

函数接口定义:

实现矩阵类

裁判测试程序样例:

/* 请在这里填写答案 */
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 编译器问我为啥编译错误.

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

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

标签:data   define   ace   cout   image   参数   std   初始   朋友   

原文地址:https://www.cnblogs.com/swyw/p/12378691.html

(4)
(5)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!