Menu
Coddy logo textTech

מעבר על איברי קבוצה

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 39 מתוך 56.

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

כך עוברים על קבוצה:

std::set<std::string> fruits = {"banana", "apple", "cherry"};

for (const std::string& fruit : fruits) {
    std::cout << fruit << std::endl;
}

התכונה החשובה ביותר שכדאי לזכור היא שקבוצות שומרות אוטומטית על סדר ממוין. כשעוברים על קבוצת הפירות שלמעלה, הפלט יהיה "apple", "banana", "cherry" — ולא הסדר שבו הכנסת אותם. המיון האוטומטי הזה הוא אחד היתרונות המרכזיים של השימוש ב־std::set.

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

challenge icon

אתגר

קל

כתבו תוכנית שמדגימה את תכונת המיון האוטומטי של std::set באמצעות הוספת מילים לקבוצה ולאחר מכן מעבר עליהן כדי להציג אותן בסדר אלפביתי. אתגר זה יבחן את הבנתכם בלולאות for מבוססות טווח עם קבוצות ובאופן שבו קבוצות שומרות על סדר ממוין.

הקלט הבא יסופק:

  • מספר שלם n המייצג את מספר המילים שיש להוסיף לקבוצה
  • לאחר מכן, n מחרוזות המייצגות את המילים שיש להוסיף לקבוצה

על התוכנית שלכם:

  1. ליצור std::set<std::string> ריקה
  2. לקרוא את מספר המילים שיש להוסיף
  3. להשתמש בלולאה כדי לקרוא כל מילה ולהוסיף אותה לקבוצה באמצעות המתודה .insert()
  4. להשתמש בלולאת for מבוססת טווח כדי לעבור על הקבוצה ולהדפיס כל מילה
  5. לאחר הדפסת כל המילים, להציג את המספר הכולל של המילים הייחודיות בקבוצה

השתמשו בפורמט הפלט המדויק הבא:

עבור כל מילה בקבוצה (בסדר אלפביתי):

[word]

סיכום בסוף:

Total unique words: [count]

השתמשו בלולאת for מבוססת טווח עם התחביר for (const std::string& word : wordSet) כדי לעבור על כל האיברים בקבוצה. הקבוצה תציג את המילים באופן אוטומטי בסדר אלפביתי, ובכך תדגים אחד היתרונות המרכזיים של השימוש ב-std::set. זכרו שאם יינתנו בקלט מילים כפולות, הקבוצה תתעלם מהן באופן אוטומטי, ולכן יוצגו רק מילים ייחודיות.

נסו בעצמכם

#include <iostream>
#include <set>
#include <string>
using namespace std;

int main() {
    // קראו את מספר המילים
    int n;
    cin >> n;
    
    // צרו קבוצה ריקה לאחסון מילים
    set<string> wordSet;
    
    // TODO: כתבו כאן את הקוד שלכם
    // קראו n מילים והכניסו אותן לקבוצה
    // השתמשו בלולאת for מבוססת-טווח כדי לעבור על הקבוצה ולהדפיס כל מילה
    // הדפיסו את המספר הכולל של המילים הייחודיות
    
    return 0;
}
quiz iconבחנו את עצמכם

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

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

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