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

המחלקה Player מייצגת שחקן. למחלקה התכנות הבאות:

  • שם השחקן – name, מסוג מחרוזת, String
  • דירוג השחקן – rating, מסוג מספר שלם, int. דירוג השחקן מתעדכן לפי התוצאות הסופיות של הטורניר.

במחלקה הוגדרו פעולות set/get לכל התכונות.

המחלקה Tournament מייצגת טורניר שחמט. למחלקה התכונות הבאות:

  • רשימת השחקנים – players, מערך עצמים מסוג Player.
  • לוח תוצאות המשחקים – results – מערך דו-ממדי של מספרים שלמים.

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

לדוגמה:

012
020
101
221

המערך הזה מייצג את התוצאות האלה:

  • שחקן 0 ניצח את שחקן 1
  • שחקן 2 ניצח את שחקן 0
  • שחקן 1 ושחקן 2 סיימו בתיקו

כלומר, הערך results[i][j] מציין את התוצאה של השחקן i מול השחקן j.

נתונה פעולה בונה של המחלקה Tournament:

public Tournament(Player[] players) {
  this.players = players;
  this.results = new int[players.length][players.length];
}
(א)כתבו את הפעולה getPlayerIndexByName. הפעולה מקבלת שם שחקן ומחזירה את המספר הסידורי שלו ברשימת השחקנים.
כותרת הפעולה:
```java
public int getPlayerIndexByName(String name)
```
(ב)כתבו את הפעולה המקבלת את שמות השחקנים ואת מספר הנקודות של השחקן הראשון. הפעולה מעדכנת את לוח תוצאות המשחקים.
כותרת הפעולה:
```java
public void playMatch(String name1, String name2, int result1)
```
(ג)כתבו פעולה המחזירה את שם השחקן המנצח בטורניר. אפשר להניח שיש רק מנצח אחד.
כותרת הפעולה:
```java
public String getNameOfWinnerPlayer()
```
(ד)אחרי סיום הטורניר מעדכנים את דירוגם של כל השחקנים: מוסיפים מספר ניצחונות ומורידים מספר הפסדים. כתבו פעולה המעדכנת את הדירוג של כל משתתפי הטורניר.
כותרת הפעולה:
```java
public void updateRating()
```

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

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

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

רוצים לתרגל אלפי שאלות נוספות?

המשיכו לתרגול מלא עם משוב אישי ←

מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות

המשיכו לתרגול מלא ←