אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2020 · קיץ מועד א · שאלה 5כל שאלות המבחן ←
מבנים לינארייםרשימות מקושרות

לקראת תחרות ריצת מרתון הוגדרה מחלקה Competitor המייצגת מתחרה שסיים את המסלול. למחלקה שלוש תכונות: minutes — מספר הדקות שנדרשו למתחרה לסיים (אינו מוגבל ל-60), מטיפוס שלם; seconds — מספר השניות שנדרשו (0 עד 59 כולל), מטיפוס שלם; name — שם המתחרה, מטיפוס מחרוזת. לכל תכונה מוגדרות get/set. נוסף על כך הוגדרה מחלקה Race המאגדת אוסף של כל המתחרים שסיימו את המסלול; מספר המתחרים אינו ידוע מראש. הנחה: אין שני מתחרים שסיימו בזמן זהה. לכל פעולה במחלקה Race יש הנחיית סיבוכיות מחייבת (n = מספר המתחרים באוסף): add הוא O(n), ורק אופן המימוש של add הוא שקובע אם rank יוכל לעמוד גם הוא ב-O(n) — שתי הפעולות תלויות זו בזו.

סעיף א

כתוב את תכונות המחלקה Race.

סעיף ב

לכל פעולה יש הנחיית סיבוכיות זמן ריצה; n הוא מספר המתחרים באוסף; חובה לעמוד בדרישות הסיבוכיות. ממש את פעולות המחלקה Race המופיעות בממשק המחלקה: public void add (Competitor x) — מקבלת מתחרה ומוסיפה אותו לאוסף, O(n) (והסיבוכיות של rank תלויה ישירות באופן המימוש כאן); public String rank (int x) — מקבלת דירוג (1 = המתחרה שסיים בזמן הקצר ביותר, 2 = השני הקצר ביותר וכן הלאה) ומחזירה את שם המתחרה בדירוג זה, O(n). הנח שקיים מתחרה בדירוג המבוקש. הערה: אין למחוק איברים מהאוסף.

public void add (Competitor x) public String rank (int x)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי