数组最大和最小数量

时间:2017-10-14 12:26:24

标签: c++

我正在尝试编写一个使用类和函数获取数组中max和min的代码。

    #include "Header.h"

    int MaxMin::MaxArray(int Numbers[5])
    {
        for (int i = 0; i < 5; i++)
        {
            Numbers[i];
            if (Numbers[i] > MaxNum)
                MaxNum = Numbers[i];
        }
        return MaxNum;
    }

    int MaxMin::MinArray(int Numbers[5])
       {
    for (int i = 0; i < 5; i++)
    {
     Numbers[i];
     if (Numbers[i] < MinNum)
        MinNum = Numbers[i];
    }
    return MinNum;
    }

这是main.cpp

    #include "Header.h"
    #include <iostream>

    using namespace std;

    void main()
    {
        MaxMin N;
        int Numb[5];
        int choice;
        for (int i = 0; i < 5; i++)
        {
            cout << "Enter the array Number " << i << " :";
            cin >> Numb[i];
            cout << endl;
        }
        cout << "Your max Number is : " << N.MaxArray(Numb) << endl;
        cout << "Your Min Number is : " << N.MinArray(Numb) << endl;

        system("Pause");
    }

最大数字工作正常,但最小数字结果为0!

1 个答案:

答案 0 :(得分:1)

问题是您在开始搜索之前没有设置默认的最大/最小值。这意味着它将从0开始,假设你只有正数可能适用于最大值但会失败最小值(负数相反,正数和负数都失败)。

有两种方法可以解决这个问题。 1将原始值设置为最小值(最大值)或最大值(最小值)允许值,或者将其设置为第一个值。

这样:

int MaxMin::MaxArray(int Numbers[5])
{
    MaxNum = Numbers[0];
    for (int i = 1; i < 5; i++)
    {
        if (Numbers[i] > MaxNum)
            MaxNum = Numbers[i];
    }
    return MaxNum;
}

int MaxMin::MinArray(int Numbers[5])
{
   MinNum = Numbers[0];
   for (int i = 1; i < 5; i++)
   {
     if (Numbers[i] < MinNum)
         MinNum = Numbers[i];
   }
   return MinNum;
}