Menu
Coddy logo textTech

יצירת קבוצה והוספת איברים

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

עכשיו, כשאתה יודע מהי קבוצה, נלמד איך ליצור אחת ולהוסיף לה איברים. כדי להוסיף איברים ל־std::set, משתמשים בשיטה .insert().

כך יוצרים קבוצה ריקה ומוסיפים אליה איברים:

std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);

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

numbers.insert(5);  // זה לא יוסיף עוד 5
numbers.insert(5);  // גם זה לא יוסיף עוד 5

לאחר כל ההוספות האלה, הקבוצה שלך תכיל רק שלושה איברים ייחודיים: 2, 5 ו-8 (ממוינים אוטומטית). ניסיונות ההוספה הכפולים של 5 פשוט מתעלמים מהם, וזה בדיוק מה שהופך קבוצות לשימושיות כל כך לשמירה על אוספים של נתונים ייחודיים.

challenge icon

אתגר

קל

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

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

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

על התוכנית שלכם לבצע את הפעולות הבאות:

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

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

Set size: [final_size]
Duplicates ignored: [number_of_duplicates]

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

נסו בעצמכם

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

int main() {
    // קראו את מספר המספרים השלמים שיש להכניס
    int n;
    cin >> n;
    
    // צרו קבוצה ריקה
    set<int> mySet;
    
    // TODO: כתבו את הקוד שלכם כאן
    // השתמשו בלולאה כדי לקרוא n מספרים שלמים ולהכניס אותם לקבוצה
    // חשבו כמה ערכים כפולים לא הוכנסו
    
    // הציגו את התוצאות
    cout << "Set size: " << mySet.size() << endl;
    cout << "Duplicates ignored: " << /* חשבו את מספר הערכים הכפולים */ << endl;
    
    return 0;
}
quiz iconבחנו את עצמכם

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

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

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