*** קראו את המטלה עד סופה לפני שתתחילו לעבוד, בייחוד את סעיף ההערות ***
במטלה זו נממש מחלקות המייצגות ליגת כדורגל ובה קבוצות, משחקים, טבלת הליגה וניתוחים סטטיסטיים.
-
Team - מחלקה המייצגת קבוצה. לכל קבוצה שם ייחודי ,רמת התקפה ורמת הגנה המיוצגות ע"י מספר (בין 0 ל-1)
-
Game - במשחק מתמודדות שתי קבוצות, קבוצת בית וקבוצת חוץ. למשחק יש תוצאה הנקבעת עפ"י כמות השערים שכל קבוצה הבקיע. הקבוצה שהבקיע יותר מנצחת. משחק עלול להסתיים בתיקו.
-
Leauge - מחלקה המייצגת ליגה. בליגה יש 20 קבוצות עם שמות יחודיים. המחלקה מייצרת את סט הקבוצות שלה באחד מהאופנים הבאים:
א. מקבלת מבחוץ סט קבוצות נתון ב. לא מקבלת קבוצות מבחוץ ומייצרת 20 קבוצות באופן רנדומלי ג. שילוב של שני הסעיפים הקודמים (לקבל חלק מבחוץ וחלק לאתחל רנדומלית). -
Schedule - לוח המשחקים של הליגה. לוח המשחקים מחולק למחזורים וכל קבוצה בליגה משחקת בכל מחזור בדיוק פעם אחת. לוח המשחקים מייצג עונה שלמה ולכן כל זוג קבוצות משחקות אחת נגד השנייה פעמיים בדיוק כאשר במחזור אחד קבוצה א' היא הקבוצה הביתית ובמחזור אחר קבוצה ב' היא הביתית. אתם יכולים להיעזר במאמר הזה: https://en.wikipedia.org/wiki/Round-robin_tournament
המשחקים בליגה שלנו יהיו דומים למשחקים בליגת כדורגל אמיתית (לא ישראל). ולכן, נגריל תוצאות שעונות על הדרישות הבאות.
- כמות הבקעות לקבוצה למשחק נעה בין 0 לאינסוף כאשר מעבר ל3 גולים ההסתברות יורדת באופן משמעותי
- ככל שרמת ההתקפה של קבוצה גבוהה יותר כך ההסתברות שלה להבקיע גדלה.
- ככל שרמת ההגנה גבוהה יותר ההסתברות לספוג קטנה יותר.
- הקבוצה הבייתית תקבל יתרון בהתקפה ובהגנה שלה. הרמה שלהן תעלה ב5%.
- עבור כל משחק הקבוצה המנצחת תקבל 3 נקודות, המפסידה 0. במידה ויש תיקו כל קבוצה תקבל נקודה אחת.
את התוצאות תקבעו עפ"י התפלגות נורמלית סביב ממוצע מסויים עם סטיית תקן מסויימת, לפי ראות עיניכם.
עיינו בקישור הבא: https://en.cppreference.com/w/cpp/numeric/random/normal_distribution
לאחר שנגמרה העונה, תהיה לנו היכולת להציג את טבלת הניקוד בסיום העונה. הטבלה מסודרת לפי שני פרמטרים לפי סדר החשיבות הבא:
- מיקום בטבלה לפי ניקוד. (אם יש תיקו בדיקות בודקים את הפרמטרים הבאים ע"פ סדר עד שיוצאים מהתיקו. כמות נצחונות, כמות הפסדים (פחות הפסדים זה יותר טוב), שערים שהובקעו, שערים שספגו)
- יחס נצחונות והפסדים
- הפרש שערים (נקודות שהקבוצה קלעה פחות נקודות שהקבוצה ספגה)
לאחר שקיבלנו תוצאות, נרצה לדעת את הנתונים הבאים:
- מי הן הקבוצות המובילות הליגה (מספר הקבוצות שתחזירו יהיה לפי פרמטר שתקבלו מבחוץ)
- מה היה אורכו של רצף הנצחונות הארוך ביותר בעונה?
- מה היה אורכו של רצף ההפסדים הארוך ביותר בעונה?
- כמה קבוצות קלעו יותר נקודות מאשר ספגו?
הוסיפו עוד שני נתונים סטטיסטיים שמעניין אותכם להציג.
- בשונה מהמטלות אותן הגשתן במהלך הסמסטר, מטלה זו אינה מחולקת לשני חלקים ויש לכם שבועיים לעבוד עליה.
- מטלה זו לא תיבדק אוטומטית אלא תקבלו עליה ציון מהצגות בלבד.
- למרות זאת, עדיין עליכם לכתוב בדיקות מקיפות לעבודה שלכם.
- בהתאם לכך, לא הגדרנו במדוייק את כל התכנית שתכתבו. לא סיפקנו בעבורכם את שמות כל המחלקות והפונקציות שעליכם לכתוב מאחר ואת הבדיקות היחידות שתצטרכו לעבור, אתם תכתבו לעצמכם. עליכם למלא את הדרישות הכתובות במטלה, אך מבנה התכנית גמיש יותר מאשר היה במטלות הקודמות. שימו לב, הגמישות יכולה להקל עליכם במקומות מסויימים ולהקשות באחרים. נסו לבנות את המערכת שלכם לפי העקרונות ההנדסיים שלמדתם במהלך הסמסטר, והתואר בכלל.
- מאחר ואת מבנה התכנית תקבעו בעצמכם, המייקפייל המצורף הוא רק תבנית שאתם יכולים להשתמש בה ולשנות כראות עיניכם. אתם לא חייבים להשתמש בו.
זוהי המטלה האחרונה לקורס, נסו להשתמש בכמה שיותר כלים אותם למדתם במהלך הסמסטר, היו יצירתיים, תלמדו ותיהנו מהדרך.
בהצלחה,
יבגני הרשקוביץ נייטרמן