Menu
Coddy logo textTech

מתמטיקה - הפרש סימטרי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 65 מתוך 66.

ההפרש הסימטרי של שתי קבוצות מכיל איברים שנמצאים באחת מהקבוצות, אך לא בחיתוך שלהן (איברים שמופיעים בדיוק באחת מהקבוצות).

צרו שני אובייקטים מסוג HashSet:

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };

צרו HashSet חדש עבור התוצאה:

HashSet<int> symmetricDifference = new HashSet<int>(set1);

השתמשו בשיטה SymmetricExceptWith כדי לחשב את ההפרש הסימטרי:

symmetricDifference.SymmetricExceptWith(set2);

לאחר הרצת הקוד שלמעלה, הקבוצה symmetricDifference מכילה:

{ 1, 2, 5, 6 }

האיברים 3 ו-4 נמצאים בשתי הקבוצות, ולכן הם אינם מופיעים בהפרש הסימטרי.

challenge icon

אתגר

קל

צור מתודה בשם FindSymmetricDifference שמקבלת שני ארגומנטים:

  • HashSet של מספרים שלמים (set1)
  • HashSet של מספרים שלמים (set2)

המתודה צריכה להחזיר HashSet<int> חדש שמכיל את ההפרש הסימטרי של שתי הקבוצות. שאר התוכנית (קריאת הקלט, מיון והדפסת התוצאות) כבר סופקה לך.

נסו בעצמכם

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

class Program
{
    public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
    {
        // כתבו כאן את הקוד שלכם
    }
    
    static void Main(string[] args)
    {
        string[] input1 = Console.ReadLine().Split(',');
        string[] input2 = Console.ReadLine().Split(',');
        
        HashSet<int> set1 = new HashSet<int>();
        HashSet<int> set2 = new HashSet<int>();
        
        foreach (string s in input1)
        {
            if (int.TryParse(s.Trim(), out int num))
            {
                set1.Add(num);
            }
        }
        
        foreach (string s in input2)
        {
            if (int.TryParse(s.Trim(), out int num))
            {
                set2.Add(num);
            }
        }
        
        HashSet<int> result = FindSymmetricDifference(set1, set2);
        
        // הדפיסו את התוצאה בסדר עולה
        int[] orderedResult = result.OrderBy(x => x).ToArray();
        foreach (int num in orderedResult)
        {
            Console.WriteLine(num);
        }
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C# אונליין