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++可变长数组,请各位帮忙等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)