为什么我的程序不会读取最大的数字?

时间:2016-09-21 04:50:52

标签: c++ numbers

我是C ++的新手,请耐心等待。我知道这是一个非常初学的问题。 我应该让用户输入一个数字。例:4。这是我们将阅读的数字,并找到最大的数字。我的程序允许用户输入一个数字,然后列出4个整数。当我打印出最大的数字时,它不是最大的数字。如果有人能解释我做错了什么,那将非常感激!

#include <iostream>
using namespace std;

int main ()
{

    float largest;
    float max_input;
    float total = 0;
    float input;

myDefault:  
    cout << "Enter a positive number to start: ";
    cin >> max_input;

    if (max_input >= 0)
    {
        total++;


            do {
                cout << "Enter integer: ";
                cin >> largest;

                    if (largest >= 0)
                        {
                        total++;

                            if (input > largest)
                            {
                            input = largest;
                            }

                }
                }while (total <= max_input);

                cout << "\nThe largest number you entered is: " << largest << ".\n\n";

    }

    else 
    {
        cout << "Error. Enter a Positive number to start. \n";
        goto myDefault;

    }

    return (0);

    }

4 个答案:

答案 0 :(得分:4)

您不断使用新输入覆盖largest的值,其中变量input应该是用于此的变量if (input > largest)。 您检查input,然后将largest替换为input的值,这完全没有意义。

您应该阅读largest,然后将input的值替换为新largest,以防它更大。

您还应该初始化变量FLT_MIN,这样它就不会以一些甚至不属于输入的随机内存垃圾值开始。例如,您可以将其作为if (largest >= 0)开始,以确保它将被第一个输入值覆盖。

仅仅if ([[GPPSignIn sharedInstance] authentication]) { // handle signIn succcess case } else { [[GPPSignIn sharedInstance] signOut]; } 做决定也没有意义,这个条件只会破坏代码。

此外,您应该正确缩进代码以便于阅读。现在的方式是很难分辨出每个代码块的开始和结束位置,这应该是你可以通过浏览代码来确定的,这个混乱使得调试成为一项非常困难的任务。

答案 1 :(得分:1)

尝试类似:

#include <iostream>
using namespace std;

int main ()
{

    float largest = 0;
    float max_input;
    float total = 0;
    float input;

myDefault:  
    cout << "Enter a positive number to start: ";
    cin >> max_input;

    if (max_input >= 0)
    {
        total++;
        do {
            cout << "Enter integer: ";
            cin >> input;

            if (input >= 0)
            {
                total++;

                if (input > largest)
                {
                    largest = input;
                }
            }

        } while (total <= max_input);

        cout << "\nThe largest number you entered is: " << largest << ".\n\n";
    }

    else 
    {
        cout << "Error. Enter a Positive number to start. \n";
        goto myDefault;
    }

    return (0);
}

您要在input中存储largest,检查下一个用户输入是否大于最大值。

答案 2 :(得分:0)

您有一个名为input的变量,但当您接收输入时,您使用的是largest变量。尝试成为

cin >> input;

以便正确存储输入。

if (input > largest)
{
    input = largest;
}

这看起来倒退了,我认为您希望将largest指定为input,而不是相反。

答案 3 :(得分:0)

你唯一的改变是

float largest;
float max_input;
float total = 0;
float input;

float largest=0;
float max_input=0;
float total = 0;
float input=0;

if (input > largest)

if (input < largest) 和  cout << "\nThe largest number you entered is: " << largest << ".\n\n";  至  cout << "\nThe largest number you entered is: " << input << ".\n\n";

最终代码将是,

#include <iostream>
using namespace std;
int main ()
{
float largest=0;
float max_input;
float total = 0;
float input=0;
myDefault:  
cout << "Enter a positive number to start: ";
cin >> max_input;

if (max_input >= 0)
{
    total++;


        do {
            cout << "Enter integer: ";
            cin >> largest;

                if (largest >= 0)
                    {
                    total++;

                        if (input < largest)
                        {
                        input = largest;
                        }

            }
            }while (total <= max_input);

            cout << "\nThe largest number you entered is: " << input << ".\n\n";

}

else 
{
    cout << "Error. Enter a Positive number to start. \n";
    goto myDefault;

}

return (0);

}