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

חברת הסעות מעונינת לעקוב אחרי תצרוכת הדלק אחרי כל כלי הרכב של כל אחד מכלי הרכב שהיא מפעילה לאורך תקופה של חודש (31 יום). לשם כך, הוגדרה המחלקה חשבונית (Invoice) המכילה את פרטי התדלוק הבאים: יום התדלוק — day (בין 1 ל-31, מסוג שלם), מספר הרכב — num (מחרוזת), שם הנהג המתדלק — name (מחרוזת), כמות הדלק שתודלקה בתדלוק זה — fuel (מספר ממשי). הניחו שבמחלקה הוגדרה פעולה בונה ופעולות get/set לכל תכונה.

המידע על כל התדלוקים בחודש מסוים נשמר במחלקה MonthFuel. למחלקה MonthFuel שתי תכונות: מערך חשבוניות — invoices (מערך עצמים מסוג Invoice), מספר חשבוניות בפועל — current (מסוג שלם). הכנסת הנתונים למערך החשבוניות לא בהכרח מתבצע לפי סדר הזמנים שבו הועדונים הוצאו בפועל. רכב יכול להיות מתודלק מספר פעמים ביום או לא מתודלק כלל.

במחלקה MonthFuel הוגדרה פעולה בונה (constructor):

public MonthFuel()
{
   this.invoices = new Invoice[1000];
   this.current = 0;
}
סעיף א

כתבו במחלקה MonthFuel פעולה בשם addInvoice המקבלת פרטי חשבונית (יום התדלוק, מספר הרכב, שם הנהג וכמות הדלק) ומוסיפה חשבונית חדשה למערך החשבוניות invoices במקום הנכון (לפי current), ומעדכנת את current בהתאם. אפשר להניח כי יש מקום במערך להוספת החשבונית.

public void addInvoice(int day, String num, String name, double fuel)

סעיף ב

כתבו במחלקה MonthFuel פעולה בשם fuelPerDay המחזירה מערך המוגדר בגודל 32 כך ש: באינדקס 0 במערך — יהיה סה"כ כמות הדלק של כל רכבי החברה במשך החודש; באינדקס 1 במערך — תהיה כמות הדלק שתדלקו בה את כל רכבי החברה ביום ה-1 בחודש; באינדקס 2 במערך — תהיה כמות הדלק שתדלקו בה את כל רכבי החברה ביום ה-2 בחודש וכך הלאה.

public double[] fuelPerDay()

סעיף ג

כתבו במחלקה MonthFuel פעולה בשם maxFuelPerCar המחזירה את מספר הרכב שתדלק את כמות הדלק הרבה ביותר במהלך אותו החודש.

public String maxFuelPerCar()

שאלות ותגובות על השאלה

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

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

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