מתמטיקה - הפרש סימטרי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 נמצאים בשתי הקבוצות, ולכן הם אינם מופיעים בהפרש הסימטרי.
אתגר
קלצור מתודה בשם 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);
}
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Null9מפת גיבוב חלק 1
מהי מפת גיבוב?הכרזה על מפת גיבובבדיקה אם מפתח קייםגישה לערכיםשינוי מילוניםסיכום – מפת גיבוב12HashSet חלק 2
מתמטיקה - איחוד של HashSetsמתמטיקה - חיתוך של HashSetמתמטיקה - הפרש קבוצותמתמטיקה - הפרש סימטרימעבר על קבוצותתרגלו בעצמכם: קומפיילר C# אונליין