编写一个函数模板,求三个数中的最大数
时间: 2023-05-04 20:00:35 浏览: 126
可以使用以下函数模板来求解三个数中的最大数:
template <typename T>
T max_num(T a, T b, T c) {
T max_num = a;
if (b > max_num) {
max_num = b;
}
if (c > max_num) {
max_num = c;
}
return max_num;
}
调用该函数即可求得三个数中的最大值。
相关问题
用C++编写一个程序完成下列题目,利用函数模板实现三个数取最大值和最小值功能,要求支持 int、float、double。
好的,以下是实现这个功能的 C++ 代码:
```cpp
#include <iostream>
#include <algorithm>
template<typename T>
T getMax(T a, T b, T c) {
return std::max(std::max(a, b), c);
}
template<typename T>
T getMin(T a, T b, T c) {
return std::min(std::min(a, b), c);
}
int main() {
int a = 1, b = 2, c = 3;
float d = 1.1, e = 2.2, f = 3.3;
double g = 1.11, h = 2.22, i = 3.33;
std::cout << "Max of int: " << getMax(a, b, c) << std::endl;
std::cout << "Max of float: " << getMax(d, e, f) << std::endl;
std::cout << "Max of double: " << getMax(g, h, i) << std::endl;
std::cout << "Min of int: " << getMin(a, b, c) << std::endl;
std::cout << "Min of float: " << getMin(d, e, f) << std::endl;
std::cout << "Min of double: " << getMin(g, h, i) << std::endl;
return 0;
}
```
我们定义了两个函数模板:`getMax` 和 `getMin`,用于分别获取三个数中的最大值和最小值。这两个函数模板都接受三个参数,类型为 `T`,即可以是 `int`、`float`、`double` 中的任意一种。
在 `main` 函数中,我们分别定义了三个 `int`、`float`、`double` 类型的变量,并分别调用了 `getMax` 和 `getMin` 函数模板,输出了结果。
这个程序可以输出以下结果:
```
Max of int: 3
Max of float: 3.3
Max of double: 3.33
Min of int: 1
Min of float: 1.1
Min of double: 1.11
```
编写一个三分搜索算法模板
三分搜索算法是一种用于寻找单峰函数极值的算法,其基本思想是将区间分为三个部分,然后根据函数值的大小关系,确定目标值所在的区间,不断缩小区间范围,直到找到目标值。以下是一个三分搜索算法的模板:
```
double ternary_search(double l, double r) {
const double eps = 1e-9; // 精度控制
while (r - l > eps) {
double m1 = l + (r - l) / 3;
double m2 = r - (r - l) / 3;
double f1 = f(m1); // 计算函数值
double f2 = f(m2);
if (f1 < f2) {
l = m1;
} else {
r = m2;
}
}
return f(l); // 返回极值
}
```
其中,f(x) 表示目标函数,l 和 r 分别表示搜索区间的左右端点。在每次循环中,将区间分为三个部分,分别计算两个中点的函数值,然后根据大小关系缩小搜索区间。最终返回区间左端点的函数值,即为极值。
注意,三分搜索算法只适用于单峰函数,如果函数不是单峰的,可能会得到错误的结果。