2017-10-14 363 views
-1

我想写一个代码,使用类和函数获取数组中的最大值和最小值。阵列的最大和最小数字

#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!

+0

[有已经存在的标准库中的函数,以获得的最小和的范围内的最大值(http://en.cppreference.com/w/cpp/algorithm/ minmax_element)。它出什么问题了? –

+0

至于如何解决你当前的代码,我建议你花一些时间阅读[如何调试小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ )由Eric Lippert提供,并学习如何使用调试器逐行执行代码。 –

+0

另外,什么是'MinNum'和'MaxNum'?他们是如何初始化的(我猜这个问题与初始化有关)? [Minimal,** Complete **和Verifiable示例](http://stackoverflow.com/help/mcve)在哪里?你认为“Numbers [i]”这个语句有什么作用? –

回答

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