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

หาค่าเฉลี่ยของสมาชิกใน Array ด้วย C#

ภาพรวม

คำนวณค่าเฉลี่ย (Average) ของอาร์เรย์จำนวนเต็ม โดยหาผลรวมแล้วหารด้วยจำนวนสมาชิก

โค้ดตัวอย่าง


using System;

public class Program {
    public static void Main() {
        int[] myArr = { 45, 23, 55, 15, 8, 4, 2, 5, 9, 14 };

        int len = myArr.Length;
        int sum = 0;

        for (int i = 0; i < len; i++) {
            sum += myArr[i];
        }

        int average = sum / len; // Integer division

        Console.WriteLine($"Sum = {sum}");
        Console.WriteLine($"Average = {average}");

        // แบบ Floating point
        double avgDouble = (double)sum / len;
        Console.WriteLine($"Average (precise) = {avgDouble:F2}");
    }
}

ผลลัพธ์


Sum = 180
Average = 18
Average (precise) = 18.00

วิธีที่ทันสมัยกว่า: LINQ Average


using System.Linq;

int[] arr = { 45, 23, 55, 15, 8, 4, 2, 5, 9, 14 };

double average = arr.Average(); // คืนค่า double
Console.WriteLine($"Average: {average:F2}");

// สำหรับ int average (truncated)
int avgInt = (int)arr.Average();
// หรือ
int avgInt2 = arr.Sum() / arr.Length;

ข้อควรระวัง: Integer Division


int[] arr = { 1, 2 };
int avg1 = arr.Sum() / arr.Length; // 3/2 = 1 (truncated!)
double avg2 = arr.Average();       // 1.5 (ถูกต้อง)

Extension Method สำหรับ Integer Average แบบ Rounding


public static class ArrayExtensions {
    public static int AverageInt(this int[] arr) {
        if (arr.Length == 0) throw new InvalidOperationException("Empty array");
        long sum = 0;
        foreach (int x in arr) sum += x;
        return (int)Math.Round((double)sum / arr.Length);
    }
}

// ใช้งาน
int[] arr = { 1, 2 };
Console.WriteLine(arr.AverageInt()); // 2 (rounded)

สรุป

  • ใช้ arr.Average() (LINQ) สำหรับค่าเฉลี่ยทศนิยม (double)
  • ใช้ arr.Sum() / arr.Length สำหรับ integer average (truncated)
  • ระวัง Integer Division - ควร cast เป็น double ก่อนหาร
  • ใช้ long สำหรับ Sum ป้องกัน Overflow