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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 二维数组简介与使用方法_二维数组怎么写

    二维数组简介与使用方法_二维数组怎么写前言本文将探讨一下关于二维数组在内存中的存储和二维数组在参数传递时的使用。一、二维数组在内存中的存储如果定义一个这样的二维数组inta[3][4]={{1,3,5,7},{9,11,13,15},{

    2022年8月4日
    6
  • 公网ip远程访问nas_无公网ip访问家庭nas

    公网ip远程访问nas_无公网ip访问家庭nas2018-12-0113:45:00770点赞5996收藏566评论上次的那篇NAS的文章有着很不错的热度,首先是感谢观众老爷们的大力支持啦,那么这篇文章主要是回答一些评论中的问题,而且也为那些第一次接触NAS的小伙伴提供一个简单的参考,如果对这方面想有所了解的,请耐心阅读下面的内容,个人记忆力有限,有些东西记不起来了,如有遗漏或者错误,请斧正。废话不多说,我们开始。如何申请公网IP这个是大家问的最多的,而且许多问题的根本原因都是公网IP造成的,那么,首先我们要知道一点基础的…

    2022年8月30日
    3
  • jvm jstat 命令使用

    jvm jstat 命令使用jstat的用法用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitoringtool”,它位于java的bin目录下,主要利用JVM内建

    2025年10月30日
    4
  • 【不专一的开发】UML(二)—行为图(状态图、活动图、序列图、协同图)

    【不专一的开发】UML(二)—行为图(状态图、活动图、序列图、协同图)脑图,概念,例子,画图,翻来覆去,深入理解

    2022年5月18日
    37
  • Spark Streaming Join

    Spark Streaming Join多数据源Join思路多数据源Join大致有以下三种思路:数据源端Join,如Android/IOS客户端在上报用户行为数据时就获取并带上用户基础信息。计算引擎上Join,如用SparkStreaming、Flink做Join。结果端Join,如用HBase/ES做Join,Join键做Rowkey/_id,各字段分别写入列簇、列或field。三种思路各有优劣,使用时注意…

    2022年6月30日
    25
  • rsync远程同步文件_ssh远程登录

    rsync远程同步文件_ssh远程登录一、简介二、配置项三、远程同步测试免交互配置:四、实时同步1、在客户机上安装notify2、编写监控脚本五、rsync批量快速删除大量文件一、简介一款快速增量备份工具RemoteSync,远程同步支持本地复制,或者与其他SSH、rsync主机同步它名称里面的r指的是remote,rsync其实就是”远程同步”(remotesync)的意思。与其他文件传输工具(如FTP或scp)不同,rsync的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改.

    2022年10月13日
    2

发表回复

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

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