Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมคำนวณค่าเฉลี่ยถ่วงน้ำหนักของจำนวนธรรมชาติใน C++


กำหนดให้มีอาร์เรย์จำนวนธรรมชาติ และอีกอาร์เรย์หนึ่งเก็บน้ำหนัก (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