הסרת איבר
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 58 מתוך 66.
המתודה Remove(element) מסירה את האיבר שצוין מתוך HashSet, אם הוא קיים. המתודה מחזירה true אם האיבר הוסר בהצלחה, ו-false אם האיבר לא נמצא בקבוצה.
צור HashSet ריק:
HashSet<string> fruits = new HashSet<string>();הוסף כמה איברים לקבוצה:
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");לאחר הרצת הקוד שלמעלה, הקבוצה fruits מכילה:
["Apple", "Banana", "Cherry"]כעת, הסר את "Banana" מהקבוצה:
bool wasRemoved = fruits.Remove("Banana");לאחר ההסרה, הקבוצה מכילה:
["Apple", "Cherry"]הערך של wasRemoved יהיה true כי "בננה" נמצאה והוסרה.
אם ננסה להסיר איבר שאינו קיים:
bool wasRemoved = fruits.Remove("Orange");הקבוצה נותרת ללא שינוי, ו-wasRemoved יהיה false.
אתגר
קלצרו מתודה בשם RemoveElement שמקבלת שני ארגומנטים:
- HashSet של מחרוזות (
set) - מחרוזת (
element) להסרה
המתודה צריכה לנסות להסיר את האיבר הנתון מהקבוצה. אם האיבר הוסר בהצלחה, הדפיסו "Element removed: True", אחרת הדפיסו "Element removed: False". לאחר מכן, הדפיסו את הקבוצה המעודכנת בשורה חדשה.
נסו בעצמכם
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Program
{
public static void RemoveElement(HashSet<string> set, string element)
{
// כתבו את הקוד שלכם כאן
}
public static void Main()
{
HashSet<string> set = new HashSet<string>();
// קראו את השורה הראשונה כדי לבדוק אם היא בפורמט JSON
string firstLine = Console.ReadLine();
string elementToRemove;
// בדקו אם הקלט הוא בפורמט של מערך JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// חלצו את התוכן שבין הסוגריים המרובעים
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// השתמשו בביטוי רגולרי כדי למצוא את כל המחרוזות שבמירכאות
MatchCollection matches = Regex.Matches(arrayContent, @"""([^""]*)""");
foreach (Match match in matches)
{
// הוסיפו את הקבוצה שנלכדה (ללא מירכאות)
if (match.Groups.Count > 1)
{
set.Add(match.Groups[1].Value.Trim());
}
}
// קראו את השורה השנייה כדי לקבל את האיבר להסרה
string secondLine = Console.ReadLine();
// בדקו אם האיבר הוא בפורמט של מחרוזת JSON
Match elementMatch = Regex.Match(secondLine, @"""([^""]*)""");
if (elementMatch.Success && elementMatch.Groups.Count > 1)
{
elementToRemove = elementMatch.Groups[1].Value;
}
else
{
elementToRemove = secondLine;
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
// עבדו את הקלט בפורמט המסורתי
string[] elements = firstLine.Split(',');
foreach (string element in elements)
{
set.Add(element.Trim());
}
// קראו את האיבר להסרה בפורמט המסורתי
elementToRemove = Console.ReadLine();
}
RemoveElement(set, elementToRemove);
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין