Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình tính Weighted Mean (Trung bình có trọng số) trong C++


Cho mảng giá trị X[] và mảng trọng số W[] tương ứng. Nhiệm vụ: tính Weighted Mean.

Công thức

$$\bar{x} = \frac{\sum_{i=1}^n x_i w_i}{\sum_{i=1}^n w_i}$$

Ví dụ 1

Input

X[] = {11, 22, 43, 34, 25, 16}
W[] = {12, 12, 43, 54, 75, 16}

Output – Weighted mean: 29.3019

Ví dụ 2

Input

X[] = {3, 4, 5, 6, 7}
W[] = {4, 5, 6, 7, 8}

Output – Weighted mean: 5.33333

Ví dụ code

#include <bits/stdc++.h>
using namespace std;

double weightedMean(int X[], int W[], int n) {
    long long sumWeight = 0;
    long long sumWeighted = 0;
    for (int i = 0; i < n; i++) {
        sumWeighted += 1LL * X[i] * W[i];
        sumWeight += W[i];
    }
    return (double)sumWeighted / sumWeight;
}

int main() {
    int X[] = {11, 22, 43, 34, 25, 16};
    int W[] = {12, 12, 43, 54, 75, 16};
    int n = sizeof(X) / sizeof(X[0]);
    
    if (sizeof(W)/sizeof(W[0]) != n) {
        cout << "Size mismatch!" << endl;
        return -1;
    }
    
    cout << "Weighted mean: " << weightedMean(X, W, n) << endl;
    return 0;
}

Kết quả

Weighted mean: 29.3019

Ứng dụng: Điểm trung bình có trọng số tín chỉ, giá trị trung bình cổ phiếu theo khối lượng giao dịch, chỉ số giá tiêu dùng...