2017-04-07 66 views
-3

幫助我找出函數4中數組的最小值。我每次都得到0。有時我會將數組中第一個索引的值作爲最小值。請仔細閱讀我的代碼並幫助我解決問題。問題在C++中查找數組中的最低值

#include <iostream> 
using namespace std; 
int count=0; 
void function1(int a[]) { 
for (count=0;count<100;count++) { 
     cin >> a[count]; 
     if (a[count]==0) 
     break; } 
} 

int function2 (int a[]) { 
int sum=0,avg=0; 
for (int n=0;n<count;n++) { 
    sum=sum+a[n]; } 
    avg=sum/count; 
    return avg; 

} 
//maximum value 
int function3 (int a[]) { 
    int max1=a[0]; 
    for (int count=0;count<100;count++) { 
     if (a[count]>max1) 
     max1=a[count]; 
    } 
     return max1; 
    } 
    //minimum value 
    int function4 (int a[]) { 
    int min1=a[0]; 
    for (int count=0;count<100;count++) { 
     if (a[count]<min1){ 
     min1=a[count];} 
     } 
     return min1; 
    } 

int main() { 
int a[100]={0}; 


function1(a); 
cout <<"Average is : "<<function2(a)<<'\n'; 
cout <<"Maximum Value is : "<<function3(a) <<'\n'; 
cout <<"Minimum value is : "<<function4(a) << '\n'; 
} 
+6

聽起來好像您可能需要學習如何使用調試器來遍歷代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver

+0

我知道錯誤在function4(有隻有3行)但我是新來的C++,所以我無法找出錯誤。 –

+0

那麼,「使用調試器」的哪一部分對您來說不清楚? –

回答

0

也許你可以用下面這行混淆:

int a[100]={0}; // This initlizes the whole array to zero. 
int a[100]={SOME_VAL}; // This initlizes the first element to SOME_VAL, and the rest of the array to zero. 

所以,可能是陣列有很多零的,所以你得到的最低。

但是,你不需要讓這個功能自己,只是用std::min_element

例子:

std::cout << "Minimum value is : " << *std::min_element(a,a+99) << std::endl; 
0

它看起來像你想學習編程本身,而不僅僅是C++。 如果您要查看C++如何獲取容器中的較小元素,我建議您查看STL文檔std::min_element()。 這已經在這裏問過:How to find minimum value from vector?

但可以肯定你仍然需要之前一些提示:

  1. 名稱的功能直觀。 function4是一個函數的可怕名稱,其含義是在容器中查找最小值/最小值/最小值。如何叫它minimum
  2. 在發佈之前進行Allways搜索。 StackOverflow非常智能,可以在您輸入時搜索您。
  3. 將數組傳遞給函數的方式是一個問題。您有一個函數可以對數組大小進行假設,而不需要擔保。如果您只是將您的聲明從a[100]更改爲a[10],則您的程序將訪問數組以外的數據。有多種解決方案。例如,包含一個額外的參數,告訴數組大小或使用std::vector。 1.請學習如何在C++中傳遞參數(特別是數組)。看看Passing arrays to and from functions safely and securely開始。
  4. 重要提示:您的數據正在通過控制檯輸入由function1()填充。 ** 你確定你正在填充數組中的100個值,而且沒有一個是零? **如果陣列中有任何0且沒有負輸入,則顯然minimum的值將爲0