2017-06-16 57 views
-4

大部分代碼似乎沒問題,需要部分幫助才能找到最小值。我必須寫什麼條件才能找到用戶輸入的最小數字,並將零作爲最小數量排除?如何正確找到用戶輸入的最小值?

#include<iostream>//header 
#include <string> 
using namespace std; 
int main() { 
int n , sentinel = 0, max = 0, min, count = 0, sum = 0; 
double avg; 
cout << "Enter a series of number terminated by 0:" << endl;//prompt user to input a series of number 

do { 
    cin >> n;//read the input 
    for (int i = 0; i < n; i++) { 
     if (n>max) 
      max = n; 
     } 
    for (int i = 0; i < n; i++) { 
     if (n<min) 
      min = n; 
    } 
    sum = sum + n; 
    count++; 



} while (n!= sentinel); 
count--; 
avg = sum/count; 

cout << "You have enter " << count << " integers" << endl;//display how may input user enter 
cout << "Average is " << avg << endl;//display average 
cout << "Max is " << max << endl;//display maximum number 
cout << "Min is " << min << endl;//display minimum number 
    system("pause"); 
    return 0; 

} 
+4

錯誤的頁面。這應該是在https://codereview.stackexchange.com –

+0

你需要一個明智的開始價值'min',但你的代碼不能用於最大值(嘗試輸入負數)或平均值(嘗試1和2,或-1和2)。 – molbdnilo

+1

嘗試向朋友解釋(甚至是虛構的)'for(int i ...'循環的要點是什麼 – molbdnilo

回答

0

您可以與您的int min;最大可能值,併爲您的int max;的最小可能值開始:

int min = std::numeric_limits<int>::max(); 
int max = std::numeric_limits<int>::min(); 

然後您爲min輸入必須高於其初始值越小任何而你爲max輸入的內容必須大於其初始值。

+0

它應該交換,不應該嗎? '如果(n max)max = n;'永遠不會是真的 –

+0

@AndreKampling heh當然,:) – Galik

相關問題