1.编写一个程序,求n(例如5)个数中的最小值和最大值(数存放在数组中,数据赋值可以采用下面两种方法的任意一种:①为简单编程,数据可以定义的时候给出,不用从键盘上输入;②从键盘输入给出数据)。(数据类型为整形,字符型,双精度)要求用函数模板实现。
时间: 2024-12-28 10:38:49 浏览: 8
为了编写一个能够求取整数、字符或双精度浮点数数组中最小值和最大值的通用函数模板,我们可以定义两个函数模板`find_min_max`和`input_min_max`。首先,我们定义一个接受不同类型数组的函数模板来找出最小值和最大值:
```cpp
template <typename T>
struct MinMax {
static T min(const T arr[], int n) {
if (n <= 0) return numeric_limits<T>::max(); // 初始化极大值防止除以零错误
T min_val = arr[0];
for (int i = 1; i < n; ++i) {
min_val = std::min(min_val, arr[i]);
}
return min_val;
}
static T max(const T arr[], int n) {
if (n <= 0) return numeric_limits<T>::min(); // 初始化极小值防止除以零错误
T max_val = arr[0];
for (int i = 1; i < n; ++i) {
max_val = std::max(max_val, arr[i]);
}
return max_val;
}
};
// 数据来自数组的版本
void find_min_max_from_array(int n, const T data[]) {
auto min_val = MinMax<T>::min(data, n);
auto max_val = MinMax<T>::max(data, n);
// ... 打印结果
}
// 数据从键盘输入的版本
void input_min_max() {
int n;
cout << "请输入元素个数: ";
cin >> n;
T data[n]; // 数组大小根据用户输入调整
// 从键盘读取数据并计算最小值和最大值
for (int i = 0; i < n; ++i) {
cout << "请输入第" << i+1 << "个数: ";
cin >> data[i];
}
auto min_val = MinMax<T>::min(data, n);
auto max_val = MinMax<T>::max(data, n);
// ... 打印结果
}
```
在这个例子中,`MinMax`模板结构体包含静态成员函数`min`和`max`,分别用于找到给定类型的数组中的最小值和最大值。然后你可以根据需求选择`find_min_max_from_array`用于预先定义的数据,或者`input_min_max`用于从用户键盘输入数据。
阅读全文