(求数组平均值) 编写两个重载函数,返回一个数组的平均值,函数声明如下: int average(const int* array, int size); //int的平均值保留为int即可。 double average(const double* array, int size);
时间: 2023-12-11 09:03:52 浏览: 88
好的,以下是实现这两个函数的代码:
```c++
int average(const int* array, int size){
int sum = 0;
for(int i = 0; i < size; i++){
sum += array[i]; // 累加数组中的元素
}
return sum / size; // 返回平均值(由于要保留为int类型,所以直接舍去小数部分)
}
double average(const double* array, int size){
double sum = 0.0;
for(int i = 0; i < size; i++){
sum += array[i]; // 累加数组中的元素
}
return sum / size; // 返回平均值
}
```
这两个函数都接受一个指向数组的指针和数组的大小作为参数。第一个函数计算整数数组的平均值,由于要保留为int类型,所以直接舍去小数部分。第二个函数计算双精度浮点数数组的平均值,并返回一个双精度浮点数。需要注意的是,如果数组中的元素数量为0,则这两个函数会导致除以0的错误。
相关问题
编写两个重载函数,返回一个数组的平均值,函数声明如下: int average(const int* array, int size); //int的平均值保留为int即可。 double average(const double* array, int size);
非常感谢您的提问。关于您的问题,我可以为您提供以下两个函数的代码实现,其中一个函数用于计算整数数组的平均值,另一个函数用于计算双精度浮点数数组的平均值:
```cpp
// 计算整数数组的平均值
int average(const int* array, int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += array[i];
}
return sum / size;
}
// 计算双精度浮点数数组的平均值
double average(const double* array, int size) {
double sum = 0;
for (int i = 0; i < size; i++) {
sum += array[i];
}
return sum / size;
}
```
这两个函数分别接受一个指向数组的指针和数组的大小。第一个函数将整数数组中的所有元素相加,并返回平均值。第二个函数也是相同的,但处理的是双精度浮点数数组。请注意,第二个函数返回的是double类型的平均值,这可以更精确地表示平均数。如果您还有其他问题,请随时与我联系。
C++编写函数,传入一个一维数组返回数组的平均值(double),使用函数重载实现int和double类型数组的平均值计算
在C++中,你可以编写一个通用的函数,通过模板元编程来实现对int和double类型数组平均值的计算。这样可以利用函数重载的概念,让同一个函数名处理不同类型的数据。以下是一个示例:
```cpp
#include <vector>
#include <type_traits>
template <typename T>
double calculateAverage(const std::vector<T>& arr) {
static_assert(std::is_arithmetic<T>::value, "Only arithmetic types are supported");
double sum = 0.0;
for (const auto& elem : arr) {
sum += elem;
}
return sum / arr.size();
}
// 函数重载实现
double calculateAverage(const std::vector<int>& intArr) {
return calculateAverage<int>(intArr);
}
double calculateAverage(const std::vector<double>& doubleArr) {
return calculateAverage<double>(doubleArr);
}
int main() {
std::vector<int> intArray = {1, 2, 3, 4, 5};
std::vector<double> doubleArray = {1.0, 2.0, 3.0, 4.0, 5.0};
double intAvg = calculateAverage(intArray);
double doubleAvg = calculateAverage(doubleArray);
std::cout << "Integer array average: " << intAvg << std::endl;
std::cout << "Double array average: " << doubleAvg << std::endl;
return 0;
}
```
这个例子中,`calculateAverage`模板函数接受一个`std::vector`类型的参数,然后根据参数的实际类型计算平均值。如果尝试传递非数值类型的数组,程序会触发静态断言错误。
阅读全文