我正在尝试输入一些值,然后将这些值放入向量中。然后按升序对它们进行排序,然后获得最小值和最大值。 每次我运行该程序时都会崩溃。
int main()
{
int min_value = 0;
int max_value = 0;
int input_value;
vector<int> value;
cout << "Put four natural numbers as input: ";
while (cin >> input_value) {
if (input_value < min_value) {
min_value = input_value;
value.push_back(min_value);
}
else if (input_value > max_value) {
max_value = input_value;
value.push_back(max_value);
}
}
std::sort(value.begin(), value.end());
cout << "The smallest value you entered is " << value[0] << endl;
cout << "The largest value you entered is " << value[value.size() - 1] << endl;
system("pause");
return 0;
}
很好的答案
答案 0 :(得分:0)
int main()
{
int min_value;
int max_value = 0;
int input_value = 0;
vector<int> value;
cout << "Put four natural numbers as input: ";
while (cin >> input_value) {
if (input_value < min_value) {
min_value = input_value;
value.push_back(min_value);
}
else if (input_value > max_value) {
max_value = input_value;
value.push_back(max_value);
}
}
std::sort(value.begin(), value.end());
cout << "The smallest value you entered is " << value[0] << endl;
cout << "The largest value you entered is " << value[value.size() - 1] << endl;
system("pause");
return 0;
} 上面的代码正常工作
答案 1 :(得分:0)
int main() {
// Initialize the minimum with a large enough value.
int min_value = 10000;
// Initialize the maximum with a small enough value.
int max_value = -10000;
std::vector<int> value;
{
int input_value;
while (std::cin >> input_value) {
// Both "if" are necessary.
if (input_value < min_value) {
min_value = input_value;
}
if (input_value > max_value) {
max_value = input_value;
}
value.push_back(input_value);
}
}
if (value.empty()) {
// Do something & early return.
std::cout << "Empty input" << std::endl;
} else {
// Curious about why use std::sort here since you have already had max &
// min. But if you want ...
std::sort(value.begin(), value.end());
std::cout << "The smallest value you entered is " << value.front()
<< std::endl;
std::cout << "The largest value you entered is " << value.back();
}
return 0;
}
您的答案中的代码似乎起作用的原因是,在这种情况下,未初始化的局部变量min_value将被赋予“随机”值,并且被赋予较大的正值。因此,这使您的解决方案“有效”。
但是仍然存在一些问题。
未初始化的变量很危险,这使您的解决方案无法始终起作用。显式初始化您的min_value和max_value。
“其他”是错误的。请考虑输入中仅包含一个元素的情况。在这种情况下,您无法捕获max_value。
在访问向量之前检查向量是否为空。访问空向量将引发异常。
还考虑负输入。