从C++的用户输入中查找最小值
Finding the minumum value out of user inputs in C++
我的问题是从用户定义的输入数量中找到最小值。到目前为止,一切都很好,除此之外。每次我尝试重新排列一些代码或尝试新方法时,我都会在屏幕上获得相同的输出:
Sum of numbers entered is: 145.4
Average of numbers entered is: 24.2333
The Highest number entered was: 45
The Lowest number entered was: 6.95283e-310
我每次都得到这个,无论输入什么,或者我尝试什么不同的建议:
The Lowest number entered was: 6.95283e-310
我知道数组的使用和实现。但是,我正在做的作业甚至还没有涵盖数组。那是后面的几章。请不要建议数组...
我看过这里:
通过用户输入查找 C++ 中的最大值和最小值 没用
http://www.cplusplus.com/forum/beginner/38799/没用
更改最大值/最小值也不起作用
#include <iostream>
using namespace std;
int main()
{
double number, numberitems, sum = 0, average, max, min;
cout << "Enter number of items: n";
cin >> numberitems;
//Make sure user can not enter negatives
if ( numberitems < 0 ) {
//no request to perform sum
std::cout << "I said not to enter a negative number... 'n";
std::cin.clear(); //clear bad input flag
return 1;
}
//Get the user's values
for (int i = 0; i < numberitems; i++)
{
std::cout << "Enter any NON-negative number: ";
std::cin >> number;
std::cout << 'n';
//Maximum value entered
if (number > max) {
max = number;
}
//minimum value entered
if (number < min) {
min = number;
}
//Make sure user can not enter negatives
if ( number < 0 ) {
//no request to perform sum
std::cout << "I said not to enter a negative number... 'n";
std::cin.clear(); //clear bad input flag
return 1;
}
//Sum of all the numbers
sum = sum + number;
//Average of all the numbers
average = sum / numberitems;
}
std::cout << endl;
std::cout << endl;
std::cout << "Sum of numbers entered is: " << sum << 'n';
std::cout << "Average of numbers entered is: " << average <<'n';
std::cout << "The Highest number entered was: " << max <<'n';
std::cout << "The Lowest number entered was: " << min <<'n';
return 0;
}
进行了临时修复:3
double min = 99999999999999999999999999999999999999999999999;
我对此很陌生。
更新
阅读更多评论后,我发现我错过了<cfloat>
。使用#include <cfloat>
NOW每个人的建议都可以在上面工作。然而,课堂上根本没有涉及<cfloat>
。所以我不确定这在这里是否可用?
#include <iostream>
#include <cfloat>
using namespace std;
int main()
{
int numberitems;
double number, sum = 0, average;
double max = 0;
double min = DBL_MAX;
cout << "Enter number of items: n";
cin >> numberitems;
//Make sure user can not enter negatives
if ( numberitems < 0 ) {
//no request to perform sum
std::cout << "I said not to enter a negative number... 'n";
std::cin.clear(); //clear bad input flag
return 1;
}
//Get the user's values
for (int i = 0; i < numberitems; i++)
{
std::cout << "Enter any NON-negative number: ";
std::cin >> number;
std::cout << 'n';
//Maximum value entered
if (number >= max) {
max = number;
}
//minimum value entered
if (number <= min) {
min = number;
}
//Make sure user can not enter negatives
if ( number < 0 ) {
std::cout << "I said not to enter a negative number...'n";
std::cin.clear(); //clear bad input flag
return 1;
}
//Sum of all the numbers
sum = sum + number;
//Average of all the numbers
average = sum / numberitems;
}
//Print the results
// some cosmetic...
std::cout << endl;
std::cout << endl;
std::cout << "n=================REPORT====================n";
std::cout << 'n';
std::cout << "tYour TotalstValuesn";
std::cout << "t-----------t------n";
std::cout << "t Sum: " << sum << 'n';
std::cout << "t Average: " << average <<'n';
std::cout << "t Highest: " << max <<'n';
std::cout << "t Lowest: " << min <<'n';
return 0;
}
同样,<cfloat>
工作正常,但我不确定是否允许我使用它。还有什么其他方法可以解决这个问题?
这个问题已经得到了很好的答案 - 很快:最小值和最大值未初始化。
然而
以上是非常具体的。 当然,在这种特定情况下它会有所帮助,但我觉得需要一个更广泛的建议,可以在这里和许多其他情况下工作。
添加打印输出
在这种情况下,将调试打印输出添加到代码("不使用调试器进行调试"(总是很有帮助的。
例如,在示例中添加以下内容可能会有所帮助:
//Get the user's values
for (int i = 0; i < numberitems; i++)
{
std::cout << "Enter any NON-negative number: ";
std::cin >> number;
std::cout << 'n';
//Maximum value entered
if (number > max) {
// debug - (remove before submission)
std::cout << "number is the new max! number = " << number
<< ", max = " << max << std::endl;
// end of debug
max = number;
}
//minimum value entered
if (number < min) {
// (debug - remove before submission)
std::cout << "number is the new min! number = " << number
<< ", min = " << min << std::endl;
// end of debug
min = number;
}
计算最小值和最大值时,应将变量初始化为默认值。对于最小值,它是最大可能值;最大 - 最小可能的一个。
double max, min; // BUG - not initialized
#include <float.h> // or <cfloat>
...
double max = 0; // CORRECT - initialized
double min = DBL_MAX; // CORRECT - initialized
对于最大值,初始化通常是-DBL_MAX
(注意:不是DBL_MIN
(,但在这种情况下,当不存在负值时,0 就足够了。
您需要为min
和max
设置一个初始值。对于min
,我建议使用初始值DBL_MAX
,该值在标头cfloat
中定义。
- 在二维数组中查找最小值和最大值?
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 如何修复错误:使用向量查找最小值和最大值进行合并排序
- 从C++的用户输入中查找最小值
- 我正在努力在随机数组中查找最小值,有人知道为什么我的代码不起作用?C++
- 从二维数组中查找最小值和最大值
- 在随机数组中查找最小值和最大值
- 在数组 c++ 中查找最小值和最大值
- 从__M128i中查找最小值/最大值
- Sentinel干扰在c++中查找最小值
- 在树中查找最小值的路径
- 最适合查找最小值的数据结构
- 在 for 循环中查找最小值并保留其索引
- 使用 ifstream 读取列中随机生成的数字的文本文件,并从列表中查找最小值和最大值
- C++函数从列表中查找最小值.此函数是否正确,因为返回的迭代器失效
- C++在二维数组中的每一行和每一列中查找最小值和最大值
- 在数组中查找最小值
- 在数组中查找最小值- c++
- 用于查找最小值、最大值、平均值、中值和模式的程序
- 使用 CUDA 中的缩减在数组中查找最小值(但跳过某些元素)