2012-10-29 70 views
0

對於上次看到我的上一個主題的人很抱歉。它充滿了粗心的錯誤和拼寫錯誤。這是我的任務。有沒有辦法在平均數中不包含負數,輸入負數時是如何終止程序?

「寫一個程序,使用戶通過輸入語句輸入一系列非負數的輸入處理結束後,程序會顯示:在奇數個數和它們的平均數;偶數數和它們的平均數;輸入的總數,通過輸入負值使輸入過程停止,確保用戶被告知這個結束條件。

這裏是我的代碼:

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 
{ 
    int number, total1=0, total2=0, count1=0, count2=0; 
    do 
    { 
     cout << "Please enter a number. The program will add up the odd and even ones separately, and average them: "; 
     cin >> number; 

     if(number % 2 == 0) 
     { 
      count1++; 
      total1+=number; 
     } 
     else if (number >= 0) 
     { 
      count2++; 
      total2+=number; 
     } 
    } 
    while (number>=0); 
     int avg1 = total1/count1; 
     int avg2 = total2/count2; 
     cout << "The average of your odd numbers are: " << avg1 << endl; 
     cout << "The average of your even numbers are " << avg2 << endl; 
} 

這似乎是工作的罰款,但是當我輸入負數要終止程序,它包括其與平均數字的其餘部分。任何建議來解決這個問題?我知道這是可能的,但這個想法逃避了我。

+3

if(number <0)break; – Duck

回答

1

後這裏:

cout << "Please enter a number. The program will add up the odd and even ones seperately, and average them: "; 
cin >> number; 

立即檢查,如果數字爲負

if(number < 0) break; 

現在,你就不需要使用do-while循環的檢查,如果數字爲負。因此,你可以用一個無限循環:

while(true) { 
    cout << "Please enter a number. The program will add up the odd and even ones seperately, and average them: "; 
    cin >> number; 

    if(number < 0) break; 

    // The rest of the code... 
} 

附加: 也有一些是錯誤的代碼。您不會向用戶顯示偶數和奇數的數量以及輸入的總數。

另一個附加:你應該用更有意義的變量名:

int totalNumEntered = 0, sumEven = 0, sumOdd = 0, numEven = 0, numOdd = 0; 

當然我不是限制你這些名字。您也可以使用其他類似的名稱。

FOR整數除法問題: 你一定投你的表達值的正確類型(在這種情況下,它是float)。你也應該改變平均變量的類型float

float avg1 = float(total1)/float(count1); 
float avg2 = float(total2)/float(count2); 
+0

我注意到有些東西也是錯的。我的問題在哪裏?另外,有沒有辦法可以初始化我的值,所以我不必做整數除法?當我將我的值初始化爲雙打時,我的第一條if語句不會啓動。 –

+0

@AdamPawelski請重新閱讀我的答案。它包含一些編輯。 –

+0

@MarkGarcia感謝您的建議。我做了必要的改變,並且改進了很多。然而,整數的劃分仍然困擾着我。任何文字或建議嗎? –

2

主循環應該是這樣的:

#include <iostream> 

for (int n; std::cout << "Enter a number: " && std::cin >> n && n >= 0;) 
{ 
    // process n 
} 

或者,如果你想發出一個診斷:

for (int n; ;) 
{ 
    std::cout << "Enter a number: "; 

    if (!(std::cin >> n)) { std::cout << "Goodbye!\n"; break; } 

    if (n < 0) { std::cout << "Non-positve number!\n"; break; } 

    // process n 
} 
0

立即在cin >>號碼後,檢查< 0,如果是,則中斷。嘗試逐行瀏覽程序以瞭解執行流程。玩得開心學習,祝你好運!

相關問題