กำหนดให้มีอาร์เรย์จำนวนธรรมชาติ และอีกอาร์เรย์หนึ่งเก็บน้ำหนัก (weight) ของแต่ละจำนวน ภารกิจคือคำนวณค่าเฉลี่ยถ่วงน้ำหนัก (weighted mean)
สูตร
$$\overline{x} = \frac{\sum_{i=1}^n (x_i \times w_i)}{\sum_{i=1}^n w_i}$$
โดย x คือจำนวนธรรมชาติ และ w คือน้ำหนักที่สัมพันธ์
ตัวอย่างที่ 1
Input: X[] = {11, 22, 43, 34, 25, 16}, W[] = {12, 12, 43, 54, 75, 16}
Output: weighted mean is : 29.3019
คำนวณ: (11×12 + 22×12 + 43×43 + 34×54 + 25×75 + 16×16) / (12 + 12 + 43 + 54 + 75 + 16)
ตัวอย่างที่ 2
Input: X[] = {3, 4, 5, 6, 7}, W[] = {4, 5, 6, 7, 8}
Output: weighted mean is : 5.33333
คำนวณ: (3×4 + 4×5 + 5×6 + 6×7 + 7×8) / (4 + 5 + 6 + 7 + 8)
โค้ดตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
float weightedmean(int X[], int W[], int size) {
int sum = 0, weight = 0;
for (int i = 0; i < size; i++) {
weight = weight + X[i] * W[i];
sum = sum + W[i];
}
return (float)weight / sum;
}
int main() {
int X[] = {11, 22, 43, 34, 25, 16};
int W[] = {12, 12, 43, 54, 75, 16};
int size_X = sizeof(X) / sizeof(X[0]);
int size_W = sizeof(W) / sizeof(W[0]);
if (size_X == size_W)
cout << "weighted mean is : " << weightedmean(X, W, size_X);
else
cout << "-1";
return 0;
}
ผลลัพธ์
weighted mean is : 29.3019