用C++实现10个数据的输入,返回10个数中值最大的。并对int、float、 char数据类型进行验证)
时间: 2024-09-18 08:13:59 浏览: 58
在C++中,你可以创建一个程序来读取10个用户输入的数据,并检查它们的类型,然后找出最大的值。这里有一个简单的实现示例:
```cpp
#include <iostream>
#include <string>
// 函数用于获取用户输入并验证类型
template <typename T>
std::pair<bool, T> get_input_and_validate(const std::string& prompt) {
T input;
bool isValid = false;
while (!isValid) {
std::cout << prompt;
if (std::cin >> input) {
if constexpr (std::is_arithmetic<T>::value) { // 验证是否为基本数值类型
isValid = true;
} else if constexpr (std::is_same_v<T, char>) { // 验证字符类型
isValid = true;
} else {
std::cerr << "Invalid data type. Please enter an integer, float, or character.\n";
}
} else {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
return {isValid, input};
}
int main() {
int largest_int = INT_MIN;
float largest_float = -FLT_MAX;
char largest_char = '\0';
for (int i = 0; i < 10; ++i) {
auto [isValid, value] = get_input_and_validate<int>(std::to_string(i+1) + ". Enter an integer: ");
if (isValid) {
largest_int = std::max(largest_int, static_cast<int>(value));
}
auto [isValid, value] = get_input_and_validate<float>(std::to_string(i+1) + ". Enter a float: ");
if (isValid) {
largest_float = std::max(largest_float, value);
}
auto [isValid, value] = get_input_and_validate<char>(std::to_string(i+1) + ". Enter a character: ");
if (isValid) {
largest_char = std::max(largest_char, static_cast<char>(value));
}
}
std::cout << "Largest integer: " << largest_int << "\n";
std::cout << "Largest float: " << largest_float << "\n";
std::cout << "Largest character: " << largest_char << "\n";
return 0;
}
```
这个程序会提示用户输入一个整数、浮点数或字符,如果输入有效,就更新相应的最大值变量。注意,由于字符类型需要转换成整型来比较,所以在这里我们将字符视为最小的整数值。
阅读全文