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

หาค่าเฉลี่ยของ Integer Array ใน C# (Alternative)

ภาพรวม

บทความนี้ซ้ำกับบทความก่อนหน้า (1004092264) เนื้อหาเกือบเหมือนกัน นี่คือเวอร์ชันปรับปรุงพร้อมเพิ่มเติม

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


using System;
using System.Linq;

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

        // Manual calculation
        int len = myArr.Length;
        int sum = 0;
        for (int i = 0; i < len; i++) {
            sum += myArr[i];
        }
        int average = sum / len;

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

        // LINQ
        double avgDouble = myArr.Average();
        Console.WriteLine($"Average (double) = {avgDouble}");
    }
}

ผลลัพธ์


Sum = 42
Average (int) = 7
Average (double) = 7

เนื้อหาเพิ่มเติม: สถิติพื้นฐาน


using System;
using System.Linq;

public static class Statistics {
    public static (int Sum, double Average, int Min, int Max, double StdDev) GetStats(this int[] arr) {
        if (arr.Length == 0) throw new InvalidOperationException("Empty array");

        int sum = arr.Sum();
        double avg = arr.Average();
        int min = arr.Min();
        int max = arr.Max();

        // Standard Deviation
        double variance = arr.Select(x => Math.Pow(x - avg, 2)).Average();
        double stdDev = Math.Sqrt(variance);

        return (sum, avg, min, max, stdDev);
    }
}

// ใช้งาน
int[] data = { 8, 4, 2, 5, 9, 14 };
var stats = data.GetStats();
Console.WriteLine($"Sum: {stats.Sum}");
Console.WriteLine($"Avg: {stats.Average:F2}");
Console.WriteLine($"Min: {stats.Min}");
Console.WriteLine($"Max: {stats.Max}");
Console.WriteLine($"StdDev: {stats.StdDev:F2}");

ผลลัพธ์


Sum: 42
Avg: 7.00
Min: 2
Max: 14
StdDev: 3.89

คำเตือน: Integer Division


// ผลลัพธ์อาจไม่ถูกต้องถ้าไม่ cast
int[] arr = { 1, 2 };
int avg = arr.Sum() / arr.Length; // 1 (ผิด - ควรเป็น 1.5)
double avgCorrect = arr.Average(); // 1.5 (ถูกต้อง)