用C++写一个可以比较三个数大小的函数,可以通过键盘输入不同类型的参数(整数,实数,浮点数),返回最大值和最小值。要求使用函数模块和类模块
时间: 2024-09-13 13:02:32 浏览: 53
基于C++浮点数(float、double)类型数据比较与转换的详解
在C++中,为了实现这个功能,我们可以创建一个函数模块和一个包含比较操作的类。这里是一个简单的示例:
```cpp
#include <iostream>
#include <limits> // 需要这个头文件来获取std::numeric_limits的最大值
// 函数模块
template <typename T>
T max_min(T a, T b, T c) {
return std::max(std::max(a, b), c);
}
// 类模块,用于比较不同类型的数据
class NumberComparator {
public:
template <typename T>
static void compareAndPrint(T num1, T num2, T num3) {
T max_value = max_min(num1, num2, num3);
T min_value;
if (std::is_floating_point<T>::value) {
min_value = *std::min_element(&num1, &num3 + 1);
} else {
min_value = *std::min_element(&num1, &num3 + 1); // 使用std::min_element找到最小值
}
std::cout << "Max value: " << max_value << std::endl;
std::cout << "Min value: " << min_value << std::endl;
}
};
int main() {
int int_num1, int_num2, int_num3;
double double_num1, double_num2, double_num3;
// 输入整数、浮点数
std::cout << "Enter three integers: ";
std::cin >> int_num1 >> int_num2 >> int_num3;
NumberComparator::compareAndPrint(int_num1, int_num2, int_num3);
std::cout << "Enter three floating-point numbers: ";
std::cin >> double_num1 >> double_num2 >> double_num3;
NumberComparator::compareAndPrint(double_num1, double_num2, double_num3);
return 0;
}
```
在这个例子中,`max_min`函数模板允许我们比较任意类型的数值,而`NumberComparator`类则处理了如何找出最大值和最小值的问题,特别是针对浮点数。注意,对于浮点数,我们需要使用`std::min_element`来查找最小值,因为`<`运算符可能不会按预期工作。
阅读全文