编写一个类模板,求出输入数组的最大值、最小值和平均值

编写一个类模板,求出输入数组的最大值、最小值和平均值,第1张

public class Xxxxxxx

{

/求最大值的方法,需要在类中多次重载该方法以适应不同的数组类型。

当传入的参数为一个空数组时,该方法会抛出自定义的ArrayEmptyException异常,该异常继承自类ArithmeticException,表示数组长度为零;在参数为浮点型时该方法还应该抛出自定义的ElementIsNaNException异常,该异常同样继承自ArithmeticException类,表示数组项是一个NaN(非数)

/

public static xxxx getMaxValue(xxxx[ ] a)

throws ArrayEmptyException,ElementIsNaNException

{

int aLen = alength;

if (aLen == 0)

{

throw new ArrayEmptyException()

}

if (DoubleisNaN(a[0]))

{

throw new ElementIsNaNException();

}

xxxx maxValue = a[0];

for (int i=1; i<aLen; i++)

{

if (DoubleisNaN(a[i]))

{

throw new ElementIsNaNException();

}

maxValue = (maxValue<=a[i])a[i]:maxValue;

}

return maxValue;

} // getMaxValue()

/求最小值的方法,需要在类中多次重载该方法以适应不同的数组类型。

当传入的参数为一个空数组时,该方法会抛出自定义的ArrayEmptyException异常,该异常继承自类ArithmeticException,表示数组长度为零;在参数为浮点型时该方法还应该抛出自定义的ElementIsNaNException异常,该异常同样继承自ArithmeticException类,表示数组项是一个NaN(非数)

/

public static xxxx getMinValue(xxxx[ ] a)

throws ArrayEmptyException,ElementIsNaNException

{

int aLen = alength;

if (aLen == 0)

{

throw new ArrayEmptyException()

}

if (DoubleisNaN(a[0]))

{

throw new ElementIsNaNException();

}

xxxx minValue = a[0];

for (int i=1; i<aLen; i++)

{

if (DoubleisNaN(a[i]))

{

throw new ElementIsNaNException();

}

minValue = (minValue>=a[i])a[i]:minValue;

}

return minValue;

} // getMinValue()

/求平均值的方法,为了计算结果的精确,所有重载方法的返回值为double,需要在类中多次重载该方法以适应不同的数组类型。

当传入的参数为一个空数组时,该方法会抛出自定义的ArrayEmptyException异常,该异常继承自类ArithmeticException,表示数组长度为零;该方法还会抛出自定义的ElementIsNaNException异常,该异常同样继承自ArithmeticException类,表示数组项是一个NaN(非数)

/

public static double getAverage(xxxx[ ] a)

throws ArrayEmptyException,ElementIsNaNException

{

int aLen = alength;

if (aLen == 0)

{

throw new ArrayEmptyException()

}

double totalValue = 00;

for (int i=0; i<aLen; i++)

{

if (DoubleisNaN(a[i]))

{

throw new ElementIsNaNException();

}

total += a[i];

}

double averageValue = totalValue / (double)aLen;

return averageValue;

} // getAverage()

} / Xxxxxxx /

//ArrayEmptyException类

public class ArrayEmptyException extends ArithmeticException

{

public ArrayEmptyException()

{

super("The argument can not be an empty array");

}

} / ArrayEmptyException /

//ElementIsNaNException类

public class ElementIsNaNException extends ArithmeticException

{

public ElementIsNaNException()

{

super("Existing NaN element/elements in the argument array, it's not allowed");

}

} / ElementIsNaNException /

数组大小就是指数组存储数据的个数,也可以说是数组长度。

数组简介:

数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。一般情况下,数组的元素类型必须相同,可以是前面讲过的各种基本数据类型。但当数组类型被指定为变体型时,它的各个元素就可以是不同的类型。数组和变量一样,也是有作用域的,按作用域的不同可以把数组分为:过程级数组(或称为局部数组)、模块级数组以及全局数组。C++数组长度 以及sizeof(), size(), length(), strlen()

c++中没有求数组长度的默认函数,只能自己写,但经常有初学者把sizeof(), size(), length(), strlen() 混淆掉。本篇博文具体解释一下如何求数组长度和这四个函数,以及可能遇到的问题。

C++求数组长度为:

int arr_length = sizeof(arr) / sizeof(arr[0]);

为了方便使用,在C语言中常定义宏来求数组长度

#define ARR_LEN(array, length){ length = sizeof(array) / sizeof(array[0]); }

使用时,直接调用宏函数即可,如

int arr[]={1,2,3,4,5};

int len;

ARR_LEN(arr, len); //此时len赋值为5

在C++中,也可以定义模板函数

template <class T>

int getArrayLen(T &array){

return sizeof(array) / sizeof(array[0]);

}

使用时,调用模板函数,如

string arr[]={"abc", "ab", "abcde", "1234567", "890"};

int len=getArrayLen(arr); //此时len赋值为5

查看vector源码,照抄并简化一下!抄一下MFC的CArray也不错!只要一个指针和一个指示大小的整型就可以了,其他都是锦上添花而已

C++怎么又变成C了。

这么好像很复杂,其实很简单的。

1)需要一个T类型的指针,动态分配内存,需要一个整数记录数组大小

2)一个缺省构造函数

vector();// 无成员,或者任意常量个成员

和一个单参构造函数

vector(int n); //n 个成员

3)添加成员,需要动态改变分配的内存大小。

改变成员数量的函数:

void resize( int n);

添加成员的函数:

void push_back(const T&t);

4)查找指定成员,逐一查找;const int find(const T& t);

查找固定位置的成员----实现 constr T& operator[](int n)const;

5)索引方式访问 实现

下标运算符[] 重载,即

constr T& operator[](int n)const;和

T& operator[](int n);

6)同类型对象赋值,实现

复制构造函数

vector(vector &v);

和 赋值运算符重载

vector operator=(const vector &v

);

7)获取数组当前长度

int size()const ;

不是很复杂呀!

你确定你要去的是总页码?用ThinkPHP自带的分页类 页面显示应该是{$page},默认显示的是N条记录数、上一页、下一页、第一页、最后一页,要显示总页数配置一下pageclassphp中的$config项

#include <stdioh>

//模板函数,求数组中的最大值

//参数含义:

//tArray:数组

//iLen:数组长度

template<typename T>

T GetMaxItem(T tArray[], int iLen)

{

T tTmp = tArray[0];

for (int i = 0; i < iLen; ++i)

{

if (tTmp < tArray[i])

{

 tTmp = tArray[i];

}

}

return tTmp;

}

int main(int argc, char argv[])

{   

//int 型测试数组

int iArray[] = {1,4,6,7,8,9};

//double型测试数组

double dbArray[] = {2345,5567,11222,234556,111};

printf("Max value in int array is:%d\n", GetMaxItem(iArray, sizeof(iArray)/sizeof(int)));

printf("Max value in double array is:%lf\n", GetMaxItem(dbArray, sizeof(dbArray)/sizeof(double)));

return 0;

}

运行截图:

以上就是关于编写一个类模板,求出输入数组的最大值、最小值和平均值全部的内容,包括:编写一个类模板,求出输入数组的最大值、最小值和平均值、数组的大小、如何做出一个C++可变长数组,请各位帮忙等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9659351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存