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

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

  • הפעולה addToCarr המוסיפה numPass לקרון carrNum. [כתוב במקור "לקרון carrId" — תוקן רשמית ל-carrNum ב-3.7.2022, ראו official_erratum_he; שם הפרמטר בקוד עצמו תמיד היה carrNum.]
  • הפעולה carrNumber המקבלת מספר נוסעים ומחזירה את מספר קרון היכול לאכלס את מספר הנוסעים הזה. אם אין מספיק מקום באף קרון הפעולה תחזיר -1.
public class Train {
  private int[] carr;                // מערך הקרונות
  private int maxInCarr; // מספר נוסעים מקסימלי בקרון
  public Train (int n, int max){                       // פעולה בונה
     this.maxInCarr = max;
     this.carr = new int[n];
  }
    public void AddToCarr(int carrNum, int numPass){
     this.carr[carrNum -1] = this.carr[carrNum -1] + numPass;
  }
    public int CarrNumber(int numPass) {. . . . .}
}
סעיף א

נתונה מחלקה Run הבאה:

public class Run {
 public static void main(String[] args){
    Scanner in = new Scanner((System.in));
    Train t = new Train(5,20);
    int carrNum;
    int pass = in.nextInt();
    while(pass > 0)
     {
         carrNum = t.carrNumber(pass);
         if(carrNum == -1)
               System.out.println("No seats left");
         else
         {
            t.addToCarr(carrNum, pass);
            System.out.println ("Your seats in "+ carrNum);
         }
           pass = in.nextInt();
         }//while
     }
}

עקבו בעזרת טבלת מעקב אחר הפעולה main עבור הקלט הבא (משמאל לימין): 10, 2, 12, 4, 15, 3, 15, 4, 8, 2, 10, 3, -99 עליכם לכלול בטבלה עמודה לכל משתנה (כולל עמודה לעצם t), עמודה לתנאי הלולאה (pass>0) ועמודה לפלט.

סעיף ב

ממשו את הפעולה carrNumber.

public int CarrNumber(int numPass)

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

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

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

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