เฉลี่ย ของตัวเลข คือ ผลรวมของตัวเลขหารด้วยจำนวนทั้งหมด
ในปัญหานี้ เราได้รับกระแสของตัวเลข และเราจะพิมพ์ค่าเฉลี่ยของตัวเลขทุกจุด
มาดูตัวอย่างการทำงานกัน −
เรามีสตรีม 5 เบอร์ 24 , 76 , 29, 63 , 88
ค่าเฉลี่ยในแต่ละจุดของกระแสน้ำจะเป็น −
24 , 50 , 43 , 48 , 56.
สำหรับสิ่งนี้ เราจะหาค่าเฉลี่ยของสตรีมทุกครั้งที่มีการเพิ่มตัวเลขลงในสตรีม ดังนั้น เราต้องหาค่าเฉลี่ยของ 1 หมายเลข , 2 ตัวเลข , 3 ตัวเลข และอื่นๆ เราจะใช้ค่าเฉลี่ยก่อนหน้าสำหรับสิ่งนี้
อัลกอริทึม
Step 1 : for i -> 0 to n (length of stream). Step 2 : find the average of elements using formula : Average = (average * i) + i / (i+1) Step 3 : print average.
ตัวอย่าง
#include <iostream> using namespace std; int main(){ int arr[] = { 24 , 76 , 29, 63 , 88 }; int average = 0; int n = sizeof(arr) / sizeof(arr[0]); for(int i = 0 ; i< n ; i++){ average = ((average * i) + arr[i]) / (i+1); cout<<"The average of "<<i+1<<" numbers of the stream is "<<average<<endl; } return 0; }
ผลลัพธ์
The average of 1 numbers of the stream is 24 The average of 2 numbers of the stream is 50 The average of 3 numbers of the stream is 43 The average of 4 numbers of the stream is 48 The average of 5 numbers of the stream is 56
อัลกอริทึมเดียวกันนี้ใช้ได้กับข้อมูลทุกประเภท และสามารถใช้คำนวณค่าเฉลี่ยของสตรีมได้ทุกจุด