Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار عبر المجموعات (Sets)

جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 66 من 66.

التكرار عبر HashSet يسمح لك بالوصول إلى كل عنصر في المجموعة. في C#، يمكنك استخدام طرق متنوعة للتكرار عبر HashSet.

باستخدام حلقة foreach:

// إنشاء HashSet
HashSet<string> colors = new HashSet<string>();

// إضافة عناصر إلى HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");

// التكرار عبر HashSet
foreach (string color in colors)
{
    Console.WriteLine(color);
}

تذكر أن HashSet لا يحافظ على ترتيب الإدخال، لذا قد لا يتم تكرار العناصر بنفس الترتيب الذي تمت إضافتها به.

يمكنك أيضاً التحويل إلى مصفوفة أو قائمة أولاً:

// التحويل إلى مصفوفة والتكرار
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
    Console.WriteLine(colorArray[i]);
}
challenge icon

التحدي

سهل

أنشئ طريقة تسمى PrintSetElements تأخذ HashSet من الأعداد الصحيحة كمدخل. يجب أن تمر الطريقة عبر المجموعة وتطبع كل عنصر في سطر جديد.

على سبيل المثال، إذا كانت المجموعة تحتوي على [5, 2, 8]، يجب أن تطبع الطريقة الخاصة بك:

5 2 8

ورقة مرجعية

للتكرار عبر HashSet في C#، استخدم حلقة foreach:

HashSet<string> colors = new HashSet<string>();
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");

foreach (string color in colors)
{
    Console.WriteLine(color);
}

لا يحافظ HashSet على ترتيب الإدراج، لذا قد لا يتم التكرار عبر العناصر بنفس الترتيب الذي تمت إضافتها به.

يمكنك أيضاً التحويل إلى مصفوفة أولاً:

string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
    Console.WriteLine(colorArray[i]);
}

جرّب بنفسك

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class Program
{
    public static void PrintSetElements(HashSet<int> set)
    {
        // اكتب كودك هنا
    }
    
    static void Main(string[] args)
    {
        HashSet<int> numbers = new HashSet<int>();
        
        // قراءة السطر الأول للتحقق من التنسيق
        string firstLine = Console.ReadLine();
        
        // التحقق مما إذا كان الإدخال بتنسيق مصفوفة JSON
        if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
        {
            try
            {
                // استخراج المحتوى بين الأقواس المربعة
                string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // محاولة تحليل محتوى مصفوفة JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // إزالة أي علامات اقتباس إذا كانت موجودة
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // التحليل كعدد صحيح وإضافته إلى المجموعة
                    if (int.TryParse(cleanValue, out int num))
                    {
                        numbers.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing JSON input: {ex.Message}");
                return;
            }
        }
        else
        {
            try
            {
                // التنسيق التقليدي - قراءة العدد ثم العناصر
                int count = int.Parse(firstLine);
                
                // قراءة كل عنصر وإضافته إلى المجموعة
                for (int i = 0; i < count; i++)
                {
                    int num = int.Parse(Console.ReadLine());
                    numbers.Add(num);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing traditional input: {ex.Message}");
                return;
            }
        }
        
        PrintSetElements(numbers);
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow