אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות — הנדסאי תוכנהמבחן 2025 · אביב מועד ב · שאלה 11כל שאלות המבחן ←
תכנות מונחה עצמיםמחלקות ואובייקטים

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

המחלקה 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. הפעולה מקבלת שם שחקן ומחזירה את המספר הסידורי שלו ברשימת השחקנים. כותרת הפעולה:

public int GetPlayerIndexByName(string name)
סעיף ב

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

public void PlayMatch(string name1, string name2, int result1)
סעיף ג

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

public string GetNameOfWinnerPlayer()
סעיף ד

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

public void UpdateRating()
שאלות ותגובות על השאלה

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

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

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