首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 加權平均數計算:權重與數值配對讀取公式實現

     編輯:程式設計疑難解答

定義

給定數對 (w₁, v₁), (w₂, v₂), ..., (wₙ, vₙ),加權平均數為:

Weighted Average = (Σ wᵢ × vᵢ) / (Σ wᵢ)

C++ 實現(讀取至 EOF)


#include 
#include 
using namespace std;

int main() {
    double weight, value;
    double sumWV = 0.0, sumW = 0.0;

    cout << "請輸入權重和數值(以空格分隔,Ctrl+Z 結束):\n";
    while (cin >> weight >> value) {
        sumWV += weight * value;
        sumW  += weight;
    }

    if (sumW != 0) {
        double weightedAvg = sumWV / sumW;
        cout << fixed << setprecision(4);
        cout << "加權平均數 = " << weightedAvg << endl;
    } else {
        cout << "無有效輸入或權重總和為零。" << endl;
    }
    return 0;
}

範例執行

輸入:
0.2 80
0.3 90
0.5 70
^Z

計算:
(0.2×80 + 0.3×90 + 0.5×70) / (0.2+0.3+0.5)
= (16 + 27 + 35) / 1.0
= 78.0

常見誤區

  • 以為只要 Σ wᵢ×vᵢ,**忘記除以 Σ wᵢ**。
  • 權重總和不為 1 時未正規化。
  • 輸入迴圈條件寫錯(如 while(!cin.eof()) 導致多讀一次)。

擴展:離散機率期望值

若權重總和 = 1,加權平均即為**期望值 E[X]**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved