C++ | 矩阵类模板(类模板)

C++ | 矩阵类模板(类模板)问题B:矩阵类模板(类模板)时间限制: 1Sec  内存限制: 128MB提交: 559  解决: 314[提交][状态][讨论版]题目描述设计一个矩阵类模板Matrix,支持任意数据类型的数据。要求至少包含2个成员函数:矩阵转置函数transport、以及打印输出函数print编写main函数进行测试,调用类的成员函数完成转置和输出。输入第一行先输入t,表示有t个测试用例从第二行开始输入…

大家好,又见面了,我是你们的朋友全栈君。

问题 B: 矩阵类模板(类模板)

时间限制: 1 Sec  
内存限制: 128 MB


提交: 559  
解决: 314

[
提交][
状态][
讨论版]

题目描述

设计一个矩阵类模板Matrix,支持任意数据类型的数据。

要求至少包含2个成员函数:矩阵转置函数transport、以及打印输出函数print

编写main函数进行测试,调用类的成员函数完成转置和输出。

输入

第一行先输入t,表示有t个测试用例

从第二行开始输入每个测试用例的数据。

首先输入数据类型,I表示int,D表示double,C表示char,接着输入两个参数m和n,分别表示矩阵的行和列

接下来输入矩阵的元素,一共m行,每行n个数据

输出

输出转置后的矩阵

样例输入

2
I 2 3
1 2 3
4 5 6
C 3 3
a b c
d e f
g h i

样例输出

1 4
2 5
3 6
a d g
b e h
c f i

#include<iostream>
#include <cstring>
using namespace std;
 
template<typename T>
class Matrix
{
private:
    T **Max;
    int row,col;
public:
    Matrix():row(0),col(0){}
    Matrix(T** M,int m,int n)
    {
        int i,j;
        row=m,col=n;
        Max=new T*[row];
        for( i=0;i<row;i++)
            Max[i]=new T [col];
  
        for( i=0;i<row;i++)
          for( j=0;j<col;j++)
            Max[i][j]=M[i][j];
    }
    Matrix(Matrix &M)
    {
        for(int i=0;i<row;i++)
          for(int j=0;j<col;j++)
            Max[i][j]=M.Max[i][j];
    }
    void transport()
    {
        int i,j;
        T **M;
        M=new T*[row];
        for( i=0;i<row;i++)
            M[i]=new T [col];
 
        for( i=0;i<row;i++)
          for( j=0;j<col;j++)
            M[i][j]=Max[i][j];
         
         for(i=0;i<row;i++)
          delete [] Max[i];
        delete [] Max;
 
        int temp = row;
        row=col;
        col=temp;
 
        Max=new T*[row];
        for( i=0;i<row;i++)
            Max[i]=new T [col];
 
        for( i=0;i<row;i++)
          for( j=0;j<col;j++)
            Max[i][j]=M[j][i];
 
         for(i=0;i<col;i++)
          delete [] M[i];
        delete [] M;
 
    }
    void print()
    {
        for(int i=0;i<row;i++)
        {
            for(int j=0;j<col-1;j++)
             cout<<Max[i][j]<<" ";
            cout<<Max[i][col-1]<<endl;
        }
    }
    ~Matrix()
    {
        for(int i=0;i<row;i++)
          delete [] Max[i];
        delete [] Max;
    }
};
 
int main()
{
    int m,n,times,
        i,j;
    char ch;
    int** m1;
    double** m2;
    char** m3;
     
    cin>>times;
    while(times--)
    {
        cin>>ch;
        cin>>m>>n;
  
        if(ch=='I')
        {
            m1=new int*[m];
            for( i=0;i<m;i++)
                m1[i]=new int [n];
  
            for(i=0;i<m;i++)
                for( j=0;j<n;j++)
            cin>>m1[i][j];
  
            Matrix<int>Ma1(m1,m,n);
            Ma1.transport();
            Ma1.print();
 
            for( i=0;i<m;i++)
              delete [] m1[i];
            delete [] m1;
        }
        if(ch=='D')
        {
            m2=new double*[m];
            for( i=0;i<m;i++)
                m2[i]=new double [n];
  
            for( i=0;i<m;i++)
                for( j=0;j<n;j++)
                cin>>m2[i][j];
  
            Matrix<double>Ma1(m2,m,n);
            Ma1.transport();
            Ma1.print();
 
            for( i=0;i<m;i++)
              delete [] m2[i];
            delete [] m2;
        }
        if(ch=='C')
        {
            m3=new char*[m];
            for(int i=0;i<m;i++)
                m3[i]=new char [n];
  
            for( i=0;i<m;i++)
                for( j=0;j<n;j++)
            cin>>m3[i][j];
  
            Matrix<char>Ma1(m3,m,n);
            Ma1.transport();
            Ma1.print();
  
            for( i=0;i<m;i++)
              delete [] m3[i];
            delete [] m3;
        }
    }
    return 0; 
}
/**************************************************************
    Problem: 1070
    User: 201*****23
    Language: C++
    Result: 正确
    Time:0 ms
    Memory:1272 kb
****************************************************************/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146694.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python + selenium 刷B站播放量

    python + selenium 刷B站播放量

    2021年11月10日
    155
  • word页数域代码

    word页数域代码针对MicrosoftWord使用alt+F9显示域代码,使用ctrl+F9插入域代码,注意:必须用ctrl+F9插入域代码,自己打括号无效第{page}页/总{numpages}页//本文档所有页数第{page}页/总{sectionpages}页//当前节所有页数…

    2022年6月9日
    110
  • mysql锁机制_类加载机制的作用和过程

    mysql锁机制_类加载机制的作用和过程Mysql锁:在多线程当中如果想保证数据的准确性是如何实现的呢?没错,通过同步实现。同步就相当于是加锁。加了锁以后有什么好处呢?当一个线程真正在操作数据的时候,其他线程只能等待。当一个线程执行完毕后,释放锁。其他线程才能进行操作!那么我们的MySQL数据库中的锁的功能也是类似的,处理事务的隔离性中,可能会出现脏读、不可重复读、幻读的问题,所以,锁的作用也可以解决这些问题!在数据库中,数据是一种供许多用户共享访问的资源,如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,

    2022年9月28日
    2
  • Python 实现PID控制一阶惯性系统[通俗易懂]

    Python 实现PID控制一阶惯性系统[通俗易懂]1.PID.py#PID控制一阶惯性系统测试程序#*****************************************************************##增量式PID系统##*************************************…

    2022年10月4日
    5
  • 倒立摆模型分析_倒立摆系统建模方法

    倒立摆模型分析_倒立摆系统建模方法模型对小车的水平受力分析Mx¨=F−bx˙−NM\ddot{x}=F-b\dot{x}-NMx¨=F−bx˙−Nx¨\ddot{x}x¨代表对运动距离的二阶微分,即小车在外力作用下的加速度。FFF是外部施加给系统的外力。x˙\dot{x}x˙代表小车当前的运动速度,小车所受到的摩擦力为摩擦系数与小车运动速度之积,即f=bx˙f=b\dot{x}f=bx˙。NNN为倒单摆作用给小车水平方向的力。对倒单摆的受力分析摆杆做平面运动,可以分解为质心的平动和绕质心的转动。N=mx¨−(mlψ

    2022年8月18日
    7
  • Go Modules 详解

    Go Modules 详解

    2022年2月19日
    285

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号