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

תלמיד ורשימת ציונים

מאתגר Java

המשימה

בנו שתי מחלקות, כל אחת עם חמשת יסודות המחלקה (שם באות גדולה, תכונות,
בנאי, getters ו-setters, ו-toString).

**Grade** — ציון:
• name — שם המקצוע
• value — ערך מספרי שלם בין 0 ל-100

**Student** — תלמיד:
• id — מספר תעודת זהות (מחרוזת)
• grades — שרשרת חוליות של ציונים

הוסיפו ל-Student:
• addGrade(g) — מוסיפה ציון לתלמיד.
• countGrades() — מחזירה כמה ציונים יש לתלמיד.
• hasFailing() — מחזירה true אם קיים אצלו ציון נכשל. ציון נכשל הוא
  ציון **מתחת ל-55**.

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

הנחיות:
• התכונות פרטיות. הגישה אליהן רק דרך פעולות המחלקה.
• שימו לב לגבול: 55 עובר, 54 נכשל.

המחלקה Node כבר מצורפת למשימה.

```ds:table
{"title":"הנתונים שבדוגמה","rows":[["ת.ז.","ציונים","יש נכשל?"],["111","מתמטיקה 90 · אנגלית 40","כן"],["222","מתמטיקה 80 · אנגלית 55","לא — 55 עובר"],["333","אין ציונים","לא"],["444","היסטוריה 54","כן — 54 נכשל"]]}
```

קוד הפתיחה

class Grade {
    private String name;
    private int value;

    public Grade(String name, int value) {
        // אתחל את התכונות
    }

    public String getName()  { return ""; }
    public int    getValue() { return 0; }
    public void   setName(String name)  { }
    public void   setValue(int value)   { }

    public String toString() { return ""; }
}

class Student {
    private String id;
    private Node<Grade> grades;

    public Student(String id) {
        // אתחל את התכונות. שרשרת ריקה היא null.
    }

    public String getId() { return ""; }

    /** מוסיפה ציון לתלמיד. */
    public void addGrade(Grade g) {
        // כתוב את הפתרון כאן
    }

    /** כמה ציונים יש לתלמיד. */
    public int countGrades() {
        // כתוב את הפתרון כאן
        return 0;
    }

    /** האם קיים ציון מתחת ל-55. */
    public boolean hasFailing() {
        // כתוב את הפתרון כאן
        return false;
    }

    public String toString() { return ""; }
}

public class Main {

    /** מדפיסה את תעודות הזהות של התלמידים שיש להם ציון נכשל. */
    public static void printFailing(Student[] students) {
        // כתוב את הפתרון כאן
    }

    public static void main(String[] args) {
        Student a = new Student("111");
        a.addGrade(new Grade("מתמטיקה", 90));
        a.addGrade(new Grade("אנגלית", 40));

        Student b = new Student("222");
        b.addGrade(new Grade("מתמטיקה", 80));
        b.addGrade(new Grade("אנגלית", 55));

        Student c = new Student("333");

        Student d = new Student("444");
        d.addGrade(new Grade("היסטוריה", 54));

        System.out.println(a.countGrades());   // 2
        System.out.println(c.countGrades());   // 0
        System.out.println(b.hasFailing());    // false
        System.out.println(d.hasFailing());    // true

        printFailing(new Student[]{a, b, c, d});   // 111 ואז 444
    }
}

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

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