用函数模板求n个数据的最小值,具体要求是: n个数据由用户键盘输入;能求不同数据类型的最小值
时间: 2024-02-15 22:04:08 浏览: 18
可以使用如下的函数模板来实现:
```cpp
#include <iostream>
#include <limits>
template<typename T>
T get_min(T arr[], int n) {
T min_val = std::numeric_limits<T>::max();
for (int i = 0; i < n; i++) {
if (arr[i] < min_val) {
min_val = arr[i];
}
}
return min_val;
}
int main() {
int n;
std::cout << "Please enter n: ";
std::cin >> n;
int* arr_int = new int[n];
std::cout << "Please enter " << n << " integers: ";
for (int i = 0; i < n; i++) {
std::cin >> arr_int[i];
}
std::cout << "The minimum integer is: " << get_min(arr_int, n) << std::endl;
delete[] arr_int;
double* arr_double = new double[n];
std::cout << "Please enter " << n << " doubles: ";
for (int i = 0; i < n; i++) {
std::cin >> arr_double[i];
}
std::cout << "The minimum double is: " << get_min(arr_double, n) << std::endl;
delete[] arr_double;
return 0;
}
```
在这个函数模板中,我们使用了`std::numeric_limits<T>::max()`来获取`T`类型的最大值,然后将`min_val`初始化为该值,这样可以保证在遍历数组时第一个元素必然会成为当前的最小值。然后依次遍历数组,如果找到比当前最小值更小的元素,则将`min_val`更新为该值。最后返回`min_val`即可。
我们在`main`函数中分别使用了`int`和`double`类型的数组来测试函数模板。用户先输入了一个整数`n`,然后依次输入`n`个整数和`n`个双精度浮点数。程序将分别计算这两个数组的最小值,并输出结果。