写一个求平均值的函数模板
时间: 2024-03-20 21:40:44 浏览: 22
好的,以下是一个求平均值的函数模板:
```cpp
template<typename T>
T average(T* arr, int size) {
T sum = 0;
for(int i = 0; i < size; i++) {
sum += arr[i];
}
return sum / size;
}
```
这个函数模板可以接受任何类型的数组,并返回该数组的平均值。调用该函数模板的示例代码如下:
```cpp
int arr1[] = {1, 2, 3, 4, 5};
double arr2[] = {1.1, 2.2, 3.3, 4.4, 5.5};
std::cout << "平均值:" << average(arr1, 5) << std::endl;
std::cout << "平均值:" << average(arr2, 5) << std::endl;
```
输出结果为:
```
平均值:3
平均值:3.3
```
相关问题
用c++写一个快速排序的模板
以下是一个使用 C 语言编写的快速排序模板:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个模板使用了快速排序算法,它是一种高效的排序算法,平均时间复杂度为 O(nlogn)。在这个模板中,swap 函数用来交换两个变量的值,partition 函数用来分割数组,并返回分割点的下标,quickSort 函数用来递归地对数组进行排序。在 main 函数中,我们创建了一个整型数组,然后使用 quickSort 函数对其进行排序,并输出排序后的结果。
利用函数模板写一个函数模板,名为max_min_mean。求int数组,float数组和double数组平均值、最大值和最小值。数组大小为5,元素值任意 在main函数中输出(不要在函数中输出)
下面是一个实现 max_min_mean 函数模板的例子:
```cpp
#include <iostream>
#include <algorithm>
template<typename T>
void max_min_mean(T arr[], int size, T& max, T& min, double& mean) {
max = *std::max_element(arr, arr + size);
min = *std::min_element(arr, arr + size);
mean = 0;
for (int i = 0; i < size; ++i) {
mean += arr[i];
}
mean /= size;
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
float arr2[] = {1.5f, 2.5f, 3.5f, 4.5f, 5.5f};
double arr3[] = {1.2, 2.3, 3.4, 4.5, 5.6};
int max1, min1;
double mean1;
max_min_mean(arr1, 5, max1, min1, mean1);
std::cout << "int array: max=" << max1 << ", min=" << min1 << ", mean=" << mean1 << std::endl;
float max2, min2;
double mean2;
max_min_mean(arr2, 5, max2, min2, mean2);
std::cout << "float array: max=" << max2 << ", min=" << min2 << ", mean=" << mean2 << std::endl;
double max3, min3;
double mean3;
max_min_mean(arr3, 5, max3, min3, mean3);
std::cout << "double array: max=" << max3 << ", min=" << min3 << ", mean=" << mean3 << std::endl;
return 0;
}
```
输出结果为:
```
int array: max=5, min=1, mean=3
float array: max=5.5, min=1.5, mean=3.5
double array: max=5.6, min=1.2, mean=3.4
```