if,else if else功能是否准确显示结果

时间:2018-03-18 20:17:29

标签: c++ function c++11 if-statement

#include <iostream>
using namespace std;
                       // prototype functions
void DisplayResult(float MaxOrMin);

float FindMinimum(float Array[5]);

float FindMaximum(float Array[5]);
                //Global Variables
float Array[5];

float MaxOrMin = 3;

float FindMin;
float FindMax;
           //Main Function
int main()
{
            cout << "Please enter 5 numbers: " << endl;

    for (int i=0; i<5; i++)
    {
        cin >> Array[i];    // input for array
    }
        cout << "Please enter '0' for minimum or '9' for maximum:"  << endl;

        cin >> MaxOrMin;    // input 0 or 9 for min or max

                    //Calling Functions
FindMinimum(Array);
FindMaximum(Array);

DisplayResult(MaxOrMin);
                return 0;
}
                             //Function to find Minimum
float FindMinimum(float Array[5])
{

float FindMin = Array[0];

    for (int y=1;y<5;y++)
    {
        if(Array[y] < FindMin)
            FindMin = Array[y];
    }

return FindMin;
}
                              //Function to find Maximum
float FindMaximum(float Array[5])
{
float FindMax = Array[0];

    for (int x=1;x<5;x++)
    {
        if(Array[x] > FindMax)
            FindMax = Array[x];
    }
return FindMax;
}

这最后一部分是我的if,否则if,else funtion:

//Function to display minimum or maximum result
void DisplayResult(float MaxOrMin)
{
if (MaxOrMin == 0)
    cout << "Minimum is: " << FindMin << endl;

    else if (MaxOrMin == 9)
        cout << "Maximum is: " << FindMax << endl;

        else
            cout << "Invalid Input" << endl;
}

我的项目是创建一个程序,使用函数在5浮点数组上获取用户输入。然后找到最大值和最小值,并显示用户要求的任何一个。

这是我的问题所在。对于max(输入9)和min(输入0),我得到&#34; 0&#34;。但是,任何其他输入都会正确返回我的&#34;无效输入&#34;消息。

我没有在日食上得到任何错误,警告或错误。我的教授告诉我,我的问题可能在于我的void函数用于显示结果。我希望有人能指出我在正确的方向。

为我的格式道歉和/或此问题对于此网站来说太基本了。

2 个答案:

答案 0 :(得分:2)

您误解了本地和全局变量的工作原理。你的Find *函数会影响本地人的全局,因此他们似乎没有做任何事情。

答案 1 :(得分:0)

问题是,您的FindMinimum()(与FindMaximum()相同)功能会计算局部变量中的最小值(最大值)并将其返回给您main() don&#39 ; t接收正确的变量

所以计算出的值就丢失了。

我的意思是......而不是

FindMinimum(Array);
FindMaximum(Array);

你应该写

FindMin = FindMinimum(Array);
FindMax = FindMaximum(Array);