תרגול מדעי המחשב

התור בדואר

מאתגר C#

המשימה

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

בנו שתי מחלקות:

**Customer** — לקוח, עם חמשת יסודות המחלקה:
• name — שם
• age — גיל

**PostOffice** — מנהלת את התור. חשבו בעצמכם על התכונות.
• addCustomer(c) — מוסיפה לקוח לתור, לפי כלל הקדימות.
• callCustomer() — מדפיסה את שם הלקוח הבא ומסירה אותו מהתור.
  אם אין לקוחות — מדפיסה "אין לקוחות בתור".

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

הפלט הצפוי:
  דוד      (בן 82 — פטור מהתור)
  אבי      (בן 23 — הראשון מבין הרגילים)
  רונית    (בן 34)
  אין לקוחות בתור

הנחיות:
• רמז לתכונות: תור אחד לא מספיק כדי לתת קדימות בלי לשבור את סדר
  ההגעה של השאר.
• 80 בדיוק כלול בפטור.

ממשק מבני הנתונים כבר מצורף למשימה.

```ds:table
{"title":"סדר ההגעה מול סדר השירות","rows":[["סדר הגעה","שם","גיל","פטור?","סדר שירות"],["1","אבי","23","לא","2"],["2","דוד","82","כן","1"],["3","רונית","34","לא","3"]]}
```

```ds:queue
{"title":"תור הפטורים אחרי שלוש ההוספות","items":["דוד"]}
```

```ds:queue
{"title":"תור הרגילים אחרי שלוש ההוספות","items":["אבי","רונית"]}
```

קוד הפתיחה

using System;

class Customer {
    private string name;
    private int age;

    public Customer(string name, int age) {
        // אתחל את התכונות
    }

    public string GetName() { return ""; }
    public int    GetAge()  { return 0; }
    public void   SetName(string name) { }
    public void   SetAge(int age)      { }

    public override string ToString() { return ""; }
}

class PostOffice {
    // הגדר כאן את התכונות

    public PostOffice() {
        // אתחל את התכונות
    }

    /** מוסיפה לקוח לתור, לפי כלל הקדימות. */
    public void AddCustomer(Customer c) {
        // כתוב את הפתרון כאן
    }

    /** מדפיסה את שם הלקוח הבא ומסירה אותו. אם אין — "אין לקוחות בתור". */
    public void CallCustomer() {
        // כתוב את הפתרון כאן
    }
}

class Program {
    static void Main() {
        PostOffice po = new PostOffice();

        po.AddCustomer(new Customer("אבי", 23));
        po.AddCustomer(new Customer("דוד", 82));
        po.AddCustomer(new Customer("רונית", 34));

        po.CallCustomer();   // דוד
        po.CallCustomer();   // אבי
        po.CallCustomer();   // רונית
        po.CallCustomer();   // אין לקוחות בתור
    }
}

כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.

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