前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >矩阵类模板(类模板)

矩阵类模板(类模板)

作者头像
叶茂林
发布2023-07-30 10:24:35
1390
发布2023-07-30 10:24:35
举报
文章被收录于专栏:叶子的开发者社区

题目描述

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

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

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

输入

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

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

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

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

输出

输出转置后的矩阵

输入样例1

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

输出样例1

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

思路分析

写一个模板类,开辟一个二维数组,题目没什么东西,拷贝构造函数什么的就不用折腾了,析构函数还是要写一下的,矩阵转置的话,我习惯在输入的时候就给它转了。

AC代码

代码语言:javascript
复制
#include <iostream>
using namespace std;
template<class T>
class Matrix
{
	int m, n;
	T** matrix = NULL;
public:
	~Matrix()
	{
		if (matrix)
		{
			for (int i = 0; i < n; i++)
				delete[] matrix[i];
			delete[] matrix;
			matrix = NULL;
		}
	}
	void datain()
	{
		cin >> m >> n;
		matrix = new T * [n];
		for (int i = 0; i < n; i++)
			matrix[i] = new T[m];

	}
	void transport()
	{
		int i, j;
		for (j = 0; j < m; j++)
			for (i = 0; i < n; i++)
				cin >> matrix[i][j];
	}
	void print()
	{
		int i, j;
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m-1; j++)
				cout << matrix[i][j]<<' ';
			cout << matrix[i][j] << endl;
		}
	}
};
int main()
{
	int t;
	char instru;
	cin >> t;
	while (t--)
	{
		cin >> instru ;
		if (instru == 'I')
		{
			Matrix<int> a;
			a.datain();
			a.transport();
			a.print();
		}
		
		else if (instru == 'D')
		{
			Matrix<double> a;
			a.datain();
			a.transport();
			a.print();
		}
		else if(instru=='C')
		{
			Matrix<char> a;
			a.datain();
			a.transport();
			a.print();
		}
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档