if, else if, else 函数未准确显示结果

if, else if, else function isn't accurately displaying results

本文关键字:if else 显示 结果 函数      更新时间:2023-10-16
#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;
}

最后一部分是我的如果,否则如果,否则功能:

//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 浮点数组上获取用户输入。然后找到最大值和最小值并显示用户要求的任何值。

这就是我的问题所在。对于最大值(输入 9(和最小值(输入 0(,我得到"0"。但是,任何其他输入都会正确返回我的"无效输入"消息。

我在日食上根本没有收到任何错误、警告或错误。我的教授告诉我,我的问题可能是我的空白函数显示结果。我希望有人能在这里为我指出正确的方向。

为我的格式和/或这个问题对于本网站来说太基本了,我们深表歉意。

你误解了局部变量和全局变量的工作原理。您的 Find* 函数用局部变量遮蔽全局变量,因此它们似乎不执行任何操作。

问题是您的FindMinimum()(与FindMaximum()相同(函数计算局部变量中的最小值(最大值(并返回它,但您main()没有在正确的变量中接收它们

因此,计算值将丢失。

我的意思是。。。而不是

FindMinimum(Array);
FindMaximum(Array);

你应该写

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