בתוכנית הטלוויזיה "האח הקטן" יש n משתתפים. לכל משתתף מספר סידורי בין 1 ל-n. בסוף כל שבוע נערכת הצבעה של צופי התוכנית. משתתף שמקבל הכי מעט קולות עוזב את בית ה"אח הקטן". שלושת המשתתפים האחרונים שנשארים מגיעים לשלב הגמר.
בתוכנית הטלוויזיה "האח הקטן" יש n משתתפים. לכל משתתף מספר סידורי בין 1 ל-n. בסוף כל שבוע נערכת הצבעה של צופי התוכנית. משתתף שמקבל הכי מעט קולות עוזב את בית ה"אח הקטן". שלושת המשתתפים האחרונים שנשארים מגיעים לשלב הגמר.
כדי לנהל את התוכנית הוגדרה המחלקה SmallBrother ולה שתי תכונות:
- votes – מערך מספרים שלמים. תוכן תאי המערך מציין את מצב המשתתף ההתחלתי בכל סבב: 0 עבור משתתף שנמצא בבית ו-(-1) עבור משתתף שמחוץ לבית. [כך לפי ההבהרה הרשמית מיום 3.7.2022, שהוסיפה למשפט המקורי את המילים "ההתחלתי בכל סבב" — ראו official_erratum_he.]
- numOfPart – מספר המשתתפים הממשיכים להשתתף בתוכנית.
להלן המחלקה:
public class SmallBrother
{
private int[] votes;
private int numOfPart;
public SmallBrother(int n)
{
this.votes = new int[n];
this.numOfPart = n;
}
public int getNumOfPart(){ return this.numOfPart; }
public void Init()
{
for(int i=0; i < votes.length; i++)
{
if(votes[i]!=-1) votes[i] = 0;
}
}
}
כתבו פעולה הקולטת את הצבעות הצופים (מספר משתתף בין 1 ל-n). קלט מסתיים כאשר מספר משתתף שנקלט ערכו 0. הפעולה מעדכנת את כמות ההצבעות של המשתתפים שנמצאים עדיין בבית. אם צופה הצביע עבור משתתף שכבר עזב את הבית, אין להתייחס להצבעה זו.
public void voting()
כתבו פעולה הבודקת מהו מספרו של המשתתף שנמצא בבית וקיבל הכי פחות קולות וצריך לעזוב את הבית. הפעולה תעדכן את מצבו ואת מספר המשתתפים שממשיכים להשתתף בתוכנית. אפשר להניח שיש רק אחד כזה.
public void update()
כתבו פעולה הבודקת אם תכנית הטלוויזיה הסתיימה, כלומר, נשארו רק שלושה משתתפים בבית. אם כן – הפעולה תדפיס מספרים סידוריים של המשתתפים שמגיעים לגמר ומחזירה true, ואם לא – הפעולה תחזיר false.
public boolean isFinish()
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.