2014-11-23 74 views
0

嘗試獲得一些C++基礎知識,但遇到問題。我需要得到溫度數組值的平均值。在這裏發佈代碼。我知道我做錯了什麼,因爲我得到了錯誤的答案。你能告訴我什麼是錯的嗎?如何從數組中獲得平均值

#include <iostream> 
using namespace std; 
int main() 
{ 
    int d = 0, i; 
    double avg = 0, sum = 0, Temperature[100]; 
    // ----------------------------------------- 
    cin >> d; 
    for (i = 1; i <= d; i++)   
    { 
     cin >> Temperature[i]; 
    } 
    for (i = 1; i <= d; i++) 
    { 
     cout << Temperature[i] << endl; // was Temperatura[i] ? 
    } 
    for (i = 1; i <= d; i++); 
    { 
     sum += Temperature[i]; 
    } 
    avg= sum/d; 
    cout << "Average: " << avg << " Sum: " << sum << endl; 

    system("pause"); 
    return 0; 
} 
+1

數組下標從0開始。 – chris 2014-11-23 07:36:17

+0

這次我從1開始,因爲用戶將得到關於i值的輸出。一天我的溫度a [i]。因此,爲了讓他更好地理解,我會說第1天,而不是第0天。 – Shien 2014-11-23 07:40:54

+0

然後輸出'i + 1'。 – chris 2014-11-23 07:52:47

回答

3

問題是愚蠢的錯誤的結果: - 從用於循環結束

for (i = 1; i <= d; i++); << semicolon 

刪除分號。

0

也許這是因爲輸入數d大於100

#include <iostream> 
using namespace std; 
int main() 
{ 
    int d = 0, i; 
    double avg = 0, sum = 0, *Temperature=0; 
    // ----------------------------------------- 
    cin >> d; 
    Temperature=new double[d]; //<== Use new to allocate array 

    for (i = 0; i < d; i++)  //<== Normaly array start at 0  
    { 
     cin >> Temperature[i]; 
    } 
    for (i = 0; i < d; i++) 
    { 
     cout << Temperatura[i] <<endl; 
    } 
    for (i = 0; i < d; i++); 
    { 
     sum += Temperature[i]; 
    } 
    average = sum/d; 
    cout << "Average: " << avg << " Sum: " << sum << endl; 
    if(Temperature!=0)    //<== Free memory 
    { 
     delete []Temperature; 
    } 
    system("pause"); 
    return 0; 
} 
+0

這不是。我得到的總和輸出爲例如:-2.53 45e-098,而我使用值3 2和6so時,計數值有問題。這是主要問題。 – Shien 2014-11-23 07:46:13

+0

注意:(a)代碼中有一個'<= d',並且(b)代碼中還有'Temperatura [i]'。刪除空指針是安全的;如果內存分配失敗,無論如何你都會遇到異常,所以程序會中止。因此'if(Temperature!= 0)'的測試是多餘的。 – 2014-11-23 07:59:05

0
  • 如果在第一次使用之前將d作爲輸入,則不需要初始化int d;
  • 一旦將d作爲輸入。現在申報int Temperature[d];,這樣如果觀測總數超過100,它應該可以工作。
  • 現在迭代數組,用於輸入和計算總和。 請注意, - 數組索引從零開始,而不是從一開始。去d-1
  • for()循環在末尾沒有;
0

步驟:

  1. 你聲明的溫度陣列,溫度的數量(你用「d」,但你並不需要用0來初始化它,只是閱讀)和可變它保持溫度的總和(例如:double sum = 0)
  2. 在for循環中(for i = 1; i < = d; i ++ || for i = 0; i < d; i ++)溫度並增加與每個元素的總和(sum + =溫度[i] || sum = sum +溫度[i]
  3. 輸出:cout < < sum/n;公式:average =(elem1 + elem2 + ... + elem n)/ n