Cho một mảng số tự nhiên và một mảng nữa chứa trọng số của các số tự nhiên tương ứng và nhiệm vụ là tính giá trị trung bình có trọng số của các số tự nhiên.
Có một công thức được sử dụng để tính giá trị trung bình có trọng số của các số tự nhiên.
$$ \ overline {x} =\ frac {\ displaystyle \ sum \ limit_ {i =1} ^ n (x_ {i *} w_ {i})} {\ displaystyle \ sum \ limit_ {i =1} ^ n w_ {i}} $$
Trong đó, x là số tự nhiên và w là trọng số liên quan đến số tự nhiên đó.
Đầu vào
X[] = {11, 22, 43, 34, 25, 16} W[] = {12, 12, 43, 54, 75, 16}
Đầu ra
weighted mean is : 29.3019
Giải thích
(11*12 + 22*12 + 43*43 + 34*54 + 25*75 + 16*16) / (12 + 12 + 43 + 54 +75 +16)
Đầu vào
X[] = {3, 4, 5, 6, 7} W[] = {4, 5, 6, 7, 8}
Đầu ra
weighted mean is : 5.33333
Giải thích
(3*4 + 4*5 + 5*6 + 6*7 + 7*8) / (4 + 5 + 6 + 7 + 8)
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Nhập hai mảng khác nhau, một mảng dành cho các số tự nhiên và một mảng khác cho trọng số của các số tự nhiên tương ứng.
-
Áp dụng công thức để tính giá trị trung bình có trọng số của các số tự nhiên
-
In kết quả tương ứng.
Thuật toán
Start Step1→ declare function to calculate weighted means of natural numbers float weightedmean(int X[], int W[], int size) Declare int sum = 0, weight = 0 Loop For int i = 0 and i < size and i++ Set weight = weight + X[i] * W[i] Set sum = sum + W[i] End return (float)weight / sum Step 2→ In main() Declare int X[] = {11, 22, 43, 34, 25, 16} Declare int W[] = {12, 12, 43, 54, 75, 16} Declare int size_X = sizeof(X)/sizeof(X[0]) Declare int size_W = sizeof(W)/sizeof(W[0]) IF (size_X == size_W) Call weightedmean(X, W, size_X) End Else Print -1 End Stop
Ví dụ
#include<bits/stdc++.h> using namespace std; //calculate weighted mean. 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; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
weighted mean is : 29.3019