我的问题是从用户定义的输入数量中找到最小值。到目前为止,一切都很好,除此之外。每次尝试重新排列一些代码或尝试一种新方法时,我都会在屏幕上不断得到相同的输出:

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


我知道数组的使用和实现。但是,我正在做的作业还没有覆盖数组。那是稍后的一些章节。请不要建议数组...

我看过这里:

Finding Maximum and Minimum values in c++ by user input
没工作

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>每个人的建议都可以正常工作。但是,<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 Totals\tValues\n";
    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>可以正常工作,但是我不确定是否可以使用它。还有其他解决方法吗?

最佳答案

这个问题已经得到了很好的答案-很快:min和max未初始化。

然而

以上是非常具体的。
当然,在这种情况下它会有所帮助,但我认为,更广泛的建议可以在这里使用,在许多其他情况下也需要。

添加打印输出

在这种情况下,将调试打印输出添加到代码中(“不使用调试器进行调试”)总是很有帮助的。

例如,在您的示例中添加以下内容可能会有所帮助:

//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;
    }

07-26 09:34