Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tách số chẵn lẻ vào mảng khác nhau C#

Duyệt mảng, kiểm tra n % 2 == 0 (chẵn) else (lẻ), thêm vào 2 List/Array riêng.

Ví dụ minh họa

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] arr = { 77, 34, 59, 42, 99 };
        
        Console.WriteLine("Mảng gốc: " + string.Join(", ", arr));
        
        // Cách 1: List (linh hoạt kích thước)
        var evens = new List();
        var odds = new List();
        
        foreach (int x in arr)
        {
            if (x % 2 == 0) evens.Add(x);
            else odds.Add(x);
        }
        
        Console.WriteLine($"Số chẵn: {string.Join(", ", evens)}");
        Console.WriteLine($"Số lẻ: {string.Join(", ", odds)}");
        
        // Cách 2: LINQ (ngắn gọn)
        var evensLinq = arr.Where(x => x % 2 == 0).ToArray();
        var oddsLinq = arr.Where(x => x % 2 != 0).ToArray();
        Console.WriteLine($"\nLINQ - Chẵn: {string.Join(", ", evensLinq)}");
        Console.WriteLine($"LINQ - Lẻ: {string.Join(", ", oddsLinq)}");
        
        // Cách 3: Single pass với Tuple (C# 7+)
        var (evens2, odds2) = Partition(arr);
        Console.WriteLine($"\nSingle pass - Chẵn: {string.Join(", ", evens2)}");
        Console.WriteLine($"Single pass - Lẻ: {string.Join(", ", odds2)}");
    }
    
    static (List Evens, List Odds) Partition(int[] arr)
    {
        var evens = new List();
        var odds = new List();
        foreach (int x in arr)
        {
            if (x % 2 == 0) evens.Add(x);
            else odds.Add(x);
        }
        return (evens, odds);
    }
}

Kết quả đầu ra

Mảng gốc: 77, 34, 59, 42, 99
Số chẵn: 34, 42
Số lẻ: 77, 59, 99

LINQ - Chẵn: 34, 42
LINQ - Lẻ: 77, 59, 99

Single pass - Chẵn: 34, 42
Single pass - Lẻ: 77, 59, 99

Lưu ý: Code gốc dùng mảng kích thước cố định new int[5] - dễ tràn nếu nhiều chẵn/lẻ hơn dự kiến. Dùng List<int> an toàn hơn.