2013-11-23 191 views
0

指示是:設計並編寫一個程序,詢問用戶確定平均值的數量。然後提示用戶輸入整數值並將它們總和。用適當的伴隨文本顯示數字和計算平均值的總和。平均值應以小數點後1位顯示。重複該過程,直到用戶輸入零(0)作爲要被平均的值的數量。您可以爲主程序循環使用「while」循環或「do ... while」循環。平均循環,for循環未執行

使用一個函數來讀取和求和值和另一個函數來顯示總和和平均值。使用「for」循環來讀取和求和值。

for循環似乎沒有執行,但我不明白爲什麼。

#include <cstdlib> 
#include <iostream> 
#include <iomanip> 
using namespace std; 

int sumNums(int amount, int, int, int); 
void displaySum(int sum, int avg); 

main() 
{ 
     int amount = 0; 
     cout <<"How many numbers do you wish to average? "; 
     cin >> amount; 
     int avg = 0, sum = 0; 

     while (amount != 0) 
     { 

      for (int lim = 0; lim == amount; lim++) 
      { 
       int number = 0; 
       cout <<"Enter a value"<< endl; 
       cin >> number; 
       sumNums(amount, number, sum, avg); 
       displaySum (sum, avg); 

      } 


     } 
} 

int sumNums (int amount, int number, int sum, int avg) 
{ 
    sum = sum + number; 
    avg = sum/amount; 
    return sum, avg;  
} 

void displaySum (int sum, int avg) 
{ 
    cout <<"The sum is "<< sum <<" and the average is "<< avg << endl;  
} 
+0

你有一個邏輯錯誤:LIM ==量 – jstevenco

回答

2
for (int lim = 0; lim == amount; lim++) 

在這裏你設置LIM爲0,並且代碼只運行,如果量不是0在你爲你執行只有LIM等於從未發生量。

無論您的條件是什麼,它必須評估爲真正的每個迭代,你想要做的。

最有可能的是,您會希望執行到lim等於amount,這意味着您希望它在lim低於amount的每次迭代中執行。

for(int lim = 0; i < amount; lim++) 
+0

我固定的部分,所以現在的循環運行。但總和和平均值保持爲0。 – matttm

+0

這是因爲您通過值傳遞變量而不是通過引用。你應該修改你的調用簽名爲int sumNums(int amount,int number,int&sum,int&avg) – ApplePie

0
for (int lim = 0; lim == amount; lim++) // so wrong... 

變化

for (int lim = 0; lim < amount; lim++)