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
****************************************************************/

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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