C++编写找出二文数组最大元和最小元的函数模板并验证其正确性
需求分析:
本程序主要解决的是: 编写一个在具有m行n列的二文数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。函数模板的原型为:template <class Type> void maxMin (Type *A, int m, int n ); 然后用户输入数组的所有值,程序执行完毕后得到所求结果。
7.2 概要设计:
本程设计思路:本程序要解决的基本问题是一个比较大小的问题,并且具体实现过程是用模板来实现。函数模板maxMin中要处理二文数组A的m行n列的诸元素,但设计第一参数传递过来的是Type*类型的首元素指针,所以具体处理时可以按照如下的“一文数组”方式来进行(共处理m乘以n个数据 -- 也即二文数组A的m行n列的诸元素。注意,二文数组的诸元素在内存中是按行连续存放的,所以才能够这样来进行处理)
7.3 详细设计与编码:
见上传程序。
7.4 调试分析:
在调试过程中程序,遇到的主要问题::对于模板的一些使用细节问题考虑的不是很全面,开始实现时虽然对模板的基本概念有所了解,但是实际运用时对模板的使用还比较生疏,问题之一便是模板使用有错,其次,在输出结果时,开始没有注意数组在内存中连续存放的道理,导致输入数据时提示混乱,后经请教同学解决了问题。
程序执行的结果:
7.5 用户使用说明:
本程序的用户使用较简单,用户运行程序时根据提示输入数组的行列值和数组中各个元素的值,然后回车即可得到所求的结果。
7.6 设计心得:
模板是c++语言的一个新特性,使用模板能够为不同的数据类型定义相同的函数体和类结构,提高了程序的开发效率。通过查阅资料和动手实践,我对于模板问题有了初步的了解,同时对于模板的基本操作也有了一个大概的认识,此次实验中我充分了解到多文数组的使用可以通过其存储方式以一文数组的方式使用,对数组问题有了更深的认识
#include<iostream>
using namespace std;
template<class T>
class Array
{
private:
T *A;
int m;
int n;
public:
Array();
void maxMin();
~Array();
};
template<class T>
Array<T>::Array()
{
int a,b;
cout<<"请确定数组的行数:";
cin>>a;
cout<<"请确定数组的列数:";
cin>>b;
m=a;
n=b;
A=new T[m*n];
/* if(A==NULL)
{
cout<<"内存不足!";
exit(1);
}
else*/
{
cout<<"请输入数组的元素:"<<endl;
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i*n+j];
}
}
}
}
template<class T>
void Array<T>::maxMin()
{
T max=A[0];
T min=A[0];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/ }
}
cout<<"最大的元素为:"<<max<<endl;
cout<<"最小的元素为:"<<min<<endl;
}
template<class T>
Array<T>::~Array()
{
delete []A;
}
void main()
{
Array <int> array;
array.maxMin();1832