2016-10-30 369 views
-1

此程序:查找最小值在陣列 - C++

  1. 注意到5個號碼(工作)
  2. 這些5號使用forif(不工作)
  3. 顯示最小值(處理不工作)

來源:

#include <iostream> 

using namespace std; 
int main() { 
    int i, a[5], min; 

    cout << "Enter 5 numbers: " << endl; 

    for (i = 0; i <=4; i++) { 
     cin >> a[i]; 
    } 

    for (i = 0; i <= 4; i++) { 
     if (a[i+1] < a[i]) 
      min = a[i+1]; 
     else 
      min = a[i]; 
    } 

    cout << "Minimum number is: " << min << endl; 
} 

回答

1

這應該工作:

#include <iostream> 

using namespace std; 

main() { 
    int i, a[5], min; 
    cout << "Enter 5 numbers: " << endl; 
    for (i = 0; i <=4; i++) { 
     cin >> a[i]; 
    } 
    min = a[0]; 
    for (i = 1; i < 5; i++) { 
     if (a[i] < min) { 
      min = a[i]; 
     } 
    } 
    cout << "Minimum number is: " << min << endl; 
    system("pause"); 
} 
2

您可以使用一個更簡單的實現。

int min=INT_MAX; 
for (i = 0; i <= 4; i++) { 
    if (a[i] < min) { 
     min = a[i]; 
    } 
} 
1

比較兩個consecutives索引,而不是分鐘,Remplace if (a[i+1] < a[i])通過如果(分鐘> A [1]),並正確地初始化分鐘(=一個用於爲例[0])。

0

這工作:

#include <iostream> 
#include <limits.h> 
    using namespace std; 

    main() { 
     int i, a[5], min=INT_MAX; 
     cout << "Enter 5 numbers: " << endl; 
     for (i = 0; i <=4; i++) { 
      cin >> a[i]; 
     } 
     for (i = 0; i <= 4; i++) { 
      if (a[i] <min) { 
       min = a[i]; 
      } 

     } 
     cout << "Minimum number is: " << min << endl; 
     system("pause"); 
    } 
2

要計算最小值,你只是比較兩個連續值對對方:

1 5 4 3 2 

所以你比較15,然後5針對4,然後4針對3,然後針對2針對3

應該要做的是比較每個連續的值與迄今爲止發現的最低值

所以有一個可笑的HIGH最低爲min開始,然後尋找一個較低:

int min = MAX_INT; // Largest possible integer 

for (..) { 
    if (min > a[i]) { // Is min more than new value? 
     min = a[i]; // Yes! New min value! 
    } // if 
} // for 
0

我就是這麼做的:

int step_1= fmax(a[0], a[1]); 
    int step_2 = fmax(a[2], a[3]); 
    int step_3 = fmax(step_1, a[4]); 
    int step_final = fmax(step_3, step_2); 
    cout<<step_final;