การหาค่าเฉลี่ยของตัวเลข ในภาษา C และ C++
ค่าเฉลี่ยของตัวเลข (Average) คือผลรวมของตัวเลขหารด้วยจำนวนตัวเลขทั้งหมดที่ต้องการนำมาหาค่าเฉลี่ย ค่าเฉลี่ยเป็นค่าทางสถิติเพื่อใช้แสดงถึงความนิยมหรือค่ากลางของข้อมูล ยกตัวอย่างเช่น การคำนวณหาอายุเฉลี่ยของคนกลุ่มหนึ่งที่สนใจฟังเพลงป๊อป ทำให้เราสามารถทราบได้ว่าเพลงประเภทนี้ได้รับความสนใจจากคนในช่วงอายุไหน เป็นต้น
ในบทเรียนนี้ คุณจะได้เรียนเรู้การเขียนโปรแกรมเพื่อหาค่าเฉลี่ยของตัวเลขในภาษา C และ C++ เนื่องจากทั้งสองภาษามีโครงสร้างที่คล้ายกัน ดังนั้นในการอธิบายโค้ดการทำงานของโค้ดจะใช้ของภาษา C เป็นหลัก
ก่อนเริ่มบทเรียน เราหวังว่าคุณจะเข้าใจการทำงานของคำสั่ง for loop และอาเรย์ในพื้นฐาน เนื่องจากเราจะใช้มันในบทเรียน และนี่เป็นเนื้อหาในบทนี้
- การหาค่าเฉลี่ยของตัวเลข
- การหาค่าเฉลี่ยจากตัวเลขในอาเรย์
การหาค่าเฉลี่ยของตัวเลข
การหาค่าเฉลี่ยของตัวเลขนั้นมีสูตรที่แน่นอน กำหนดให้เซ็ต S ประกอบไปด้วยตัวเลขจำนวน N ตัว ดังนั้นค่าเฉลี่ยของตัวเลขในเซ็ตนี้สามารถคำนวณได้จาก ผลรวมของตัวเลขในเซ็ต S หารด้วย N และนี่เป็นสูตรของการหาค่าเฉลี่ยในทางคณิตศาสตร์
ค่าเฉลี่ย = (S1 + S2 + S3 + ... + Sn) / N
จากสูตรคำนวณหาค่าเฉลี่ยข้างต้น เราสามารถนำมาใช้ประยุกต์ใช้ในการเขียนโปรแกรมได้ สำหรับตัวอย่างแรกในบทนี้ มาเขียนโปรแกรมเพื่อหาค่าเฉลี่ยของตัวเลข 3 ตัวในภาษา C และ C++ นี่เป็นตัวอย่างของโปรแกรม
#include <stdio.h>
int main()
{
int a = 2, b = 3, c =6;
int sum = a + b + c;
float avg = sum / (float)3;
printf("Average: %f", avg);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 3, c =6;
int sum = a + b + c;
float avg = sum / (float)3;
cout << "Average: " << avg << endl;
return 0;
}
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
Average: 3.666667
ในตัวอย่างนี้ เป็นโปรแกรมสำหรับหาค่าเฉลี่ยของตัวเลขสามตัวที่ถูกประกาศและจัดเก็บไว้ในตัวแปร a
, b
และ c
ในการหาค่าเฉลี่ยของตัวเลขเราต้องทราบผลรวมและจำนวนของตัวเลขทั้งหมดซึ่งก็คือ 3
int sum = a + b + c;
ในการคำนวณหาผลรวม เพียงแค่นำค่าในตัวแปรทั้งสามมาบวกกันด้วยตัวดำเนินการบวก (+
) และผลรวมที่ได้ถูกเก็บได้ในตัวแปร sum
ซึ่งคำสั่งมีการทำงานที่ตรงไปตรงมา
float avg = sum / (float)3;
เมื่อได้ผลรวมแล้ว คำนวณหาค่าเฉลี่ยโดยนำผลรวมจากตัวแปร sum
หารด้วยจำนวนของตัวเลขทั้งหมดคือ 3
และในการหารตัวเลข สังเกตว่าเราได้แปลงตัวเลขเป็น float
ก่อนเพื่อให้ได้ผลลัพธ์จากการหารเป็นตัวเลขทศนิยม
printf("Average: %f", avg);
สุดท้ายเราได้รับค่าเฉลี่ยของตัวเลขทั้งสามเก็บไว้ในตัวแปร avg
และแสดงผลออกทางหน้าจอด้วยฟังก์ชัน printf
นี่เป็นโปรแกรมหาค่าเฉลี่ยอย่างง่ายที่สามารถเขียนได้ในภาษา C และ C++
การหาค่าเฉลี่ยจากตัวเลขในอาเรย์
ในตัวอย่างที่ผ่านมา โปรแกรมจำกัดการทำงานกับเพียงสามตัวเลขเท่านั้น ในทางปฏิบัติ ข้อมูลที่ต้องการนำมาหาค่าเฉลี่ยอาจมีตั้งแต่ 1 - N จำนวน ดังนั้นเป็นเรื่องดีที่เราจะปรับปรุงโปรแกรมให้สามารถใช้หาค่าเฉลี่ยของตัวเลขเป็นจำนวนมากได้ เราสามารถใช้อาเรย์ร่วมกับคำสั่ง for loop เพื่อช่วยให้การทำงานดังกล่าวสำเร็จ
นี่เป็นตัวอย่างของโปรแกรมหาค่าเฉลี่ยในภาษา C และ C++ ที่รองรับการหาค่าเฉลี่ยกับจำนวนของข้อมูลที่กำหนดเองได้
#include <stdio.h>
int main()
{
int n;
printf("How many numbers to compute for average? ");
scanf("%d", &n);
int numbers[n];
for (int i = 0; i < n; i++) {
printf("No %d: ", i + 1);
scanf("%d", numbers[i]);
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += numbers[i];
}
float avg = sum / (float) n;
printf("Average: %f", avg);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "How many numbers to compute for average? ";
cin >> n;
int numbers[n];
for (int i = 0; i < n; i++) {
cout << "No " << i + 1 << ": ";
cin >> numbers[i];
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += numbers[i];
}
float avg = sum / (float) n;
cout << "Average: " << avg << endl;
return 0;
}
นี่เป็นผลลัพธ์การทำงานของโปรแกรม ในตอนแรกใช้มันสำหรับหาค่าเฉลี่ยของสามตัวเลขเช่นเดียวกันกับในตัวอย่างที่ผ่านมา
How many numbers to compute for average? 3
No 1: 2
No 2: 3
No 3: 6
Average: 3.666667
จากนั้นลองรันโปรแกรมอีกครั้ง ในครั้งนี้เรากรอกจำนวนของตัวเลขที่ต้องการหาค่าเฉลี่ยนเป็น 10 นั่นหมายความว่าโปรแกรมจะถามให้กรอกอีก 10 ตัวเลขเพื่อนำมาหาค่าเฉลี่ย
How many numbers to compute for average? 10
No 1: 2
No 2: 15
No 3: 19
No 4: 8
No 5: 14
No 6: 17
No 7: 10
No 8: 7
No 9: 13
No 10: 9
Average: 11.400000
ในตอนนี้ โปรแกรมสามารถใช้เพื่อหาค่าเฉลี่ยกับจำนวนของตัวเลขเท่าไรก็ได้ เพียงแค่ระบุจำนวนที่ต้องการในตอนแรกที่โปรแกรมทำงาน ต่อไปเป็นการอธิบายการทำงานของโปรแกรม
int n;
printf("How many numbers to compute for average? ");
scanf("%d", &n);
ในตอนแรกเป็นการประกาศตัวแปร n
ที่ใช้เก็บจำนวนของตัวเลขทั้งหมดเพื่อนำมาหาค่าเฉลี่ย เมื่อโปรแกรมเริ่มต้นทำงาน คุณจะถูกถามให้กรอกค่านี้จากทางคีย์บอร์ดด้วยฟังก์ชัน scanf
และเก็บไว้ในตัวแปรดังกล่าว
int numbers[n];
ต่อมาเป็นการประกาศอาเรย์ numbers
ที่มีขนาด n
สำหรับเก็บตัวเลขจำนวน n ตัวเพื่อนำมาหาค่าเฉลี่ย การใช้อาเรย์จะช่วยให้เก็บตัวเลขเป็นจำนวนมากได้ในตัวแปรเดียว และตัวเลขถูกเก็บเป็นลำดับที่สามารถเข้าถึงค่าได้ผ่านทาง Index ของมัน
for (int i = 0; i < n; i++) {
printf("No %d: ", i + 1);
scanf("%d", &numbers[i]);
}
จากนั้นเป็นการใช้คำสั่ง for loop เพื่อวนรับค่าจำนวน n ค่า และนำมาเก็บไว้ในตัวแปรอาเรย์ ในการทำงานของลูปในแต่ละรอบ ตัวแปร i
ได้ถูกใช้เป็น Index ของอาเรย์โดยเริ่มจาก 0
ถึง n -1
เพื่อการอ้างถึงค่าในอาเรย์สำหรับเก็บข้อมูล
int sum = 0;
for (int i = 0; i < n; i++) {
sum += numbers[i];
}
เมื่อได้ค่าทั้งหมดมาเก็บไว้ในอาเรย์แล้ว ต่อไปเป็นการอ่านค่าจากในอาเรย์ numbers
เพื่อนำมาหาผลรวม และเช่นเดิม เราใช้คำสั่ง for loop เพื่อวนอ่านค่าในอาเรย์ และนำแต่ละค่าในอาเรย์มาบวกรวมกันไว้ในตัวแปร sum
float avg = sum / (float) n;
printf("Average: %f", avg);
และสุดท้ายเป็นการคำนวณหาค่าเฉลี่ยโดยการนำค่าในตัวแปร sum
หารด้วยจำนวนของตัวเลขทั้งหมดจากตัวแปร n
และเก็บผลลัพธ์ไว้ในตัวแปร avg
จากนั้นแสดงค่าเฉลี่ยของตัวเลขออกทางหน้าจอ
จากในตัวอย่างของโปรแกรมที่ได้รับการปรับปรุงนี้ จะเห็นว่ามันสามารถใช้สำหรับหาค่าเฉลี่ยของ 10, 20 หรือ 100 จำนวนก็ได้ และนี่เป็นวิธีที่โปรแกรมที่มีความยืดหยุ่นในการใช้งานควรจะเป็น และเช่นเดิมคุณยังสามารถใช้มันเพื่อหาค่าเฉลี่ยของสามตัวเลขได้
โปรแกรมนี้จะใช้กับตัวเลขจำนวนเต็มเท่านั้น เพราะประเภทข้อมูลที่ประกาศให้กับอาเรย์นั้นเป็น int
ในกรณีที่คุณต้องการให้โปรแกรมทำงานกับตัวเลขทศนิยมได้ คุณสามารถเปลียนประเภทของตัวแปรในตอนประกาศเป็น float
ยกตัวอย่างเช่น
float numbers[n];
...
float sum = 0;
นี่จะทำให้คุณสามารถใช้มันเพื่อหาค่าเฉลี่ยของตัวเลขอย่าง 1.5, 2.5 และ 5.0
ในบทนี้ คุณได้เรียนรู้การเขียนโปรแกรมเพื่อหาค่าเฉลี่ยในภาษา C และภาษา C++ เราได้พูดถึงความหมายและสูตรการคำนวณของค่าเฉลี่ย และการเขียนโปรแกรมที่สามารถคำนวณหาค่าเฉลี่ยกับจำนวนของตัวเลขเท่าไรก็ได้