divicidivici·איזיפס·פשוט להצליח

מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנה — קיץ 2022 מועד א' (97105)

תאריך הבחינה: לא ידוע

טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).

פתרו את המבחן אונליין — בשפה שלכם:JavaC#

למגמת הנדסת תוכנה — מבנה נתונים ותכנות מונחה עצמים. נבחנים ב-Java או ב-C#, ובוחרים שפה בכניסה למבחן.

✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם

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

שאלות לדוגמה מהמבחן — פתרו עכשיו

בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 11 שאלות המבחן — את כולן תוכלו לפתור אונליין.

שאלה 1

שרשרת חוליות מטיפוס שלם; "שרשרת ההפרשים" שלה היא שרשרת חדשה שבה כל איבר הוא ההפרש בערך מוחלט בין כל זוג איברים סמוכים במקור. דוגמה: 5,20,9,6,5,8,2 -> 15,11,3,1,3,6. הפעלה חוזרת עד לאיבר יחיד ("השורד"): ...-> 4,8,2,2,3 -> 4,6,0,1 -> 2,6,1 -> 4,5 -> 1.

דוגמה: השרשרת 5→20→9→6→5→8→2 (7 חוליות); שרשרת ההפרשים שלה: |20-5|=15, |9-20|=11, |6-9|=3, |5-6|=1, |8-5|=3, |2-8|=6 — כלומר 15→11→3→1→3→6 (6 חוליות). לסעיף ב׳: הפעלה חוזרת עד שנותר איבר אחד ("השורד"): 5,20,9,6,5,8,2 → 15,11,3,1,3,6 → 4,8,2,2,3 → 4,6,0,1 → 2,6,1 → 4,5 → 1. הפעולה מחזירה 1.

5 → 20 → 9 → 6 → 5 → 8 → 2 → null
(הפרשים) 15 → 11 → 3 → 1 → 3 → 6 → null
(הפרשים) 4 → 8 → 2 → 2 → 3 → null
(הפרשים) 4 → 6 → 0 → 1 → null
(הפרשים) 2 → 6 → 1 → null
(הפרשים) 4 → 5 → null
(הפרשים) 1 → null   <- השורד
סעיף א

כתבו פעולה חיצונית בשם differenceList (Java) / DifferenceList (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. הפעולה תחזיר הפניה לחוליה הראשונה של "שרשרת ההפרשים".

public static Node<Integer> differenceList(Node<Integer> lst)

סעיף ב

כתבו פעולה חיצונית בשם theSurvives (Java) / TheSurvives (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. על הפעולה לחשב שוב ושוב את שרשרת ההפרשים שלה עד שמתקבלת רשימה עם איבר אחד — איבר זה הוא ה"שורד". על הפעולה להדפיס את כל השרשראות המתקבלות ולהחזיר את ערכו של האיבר ה"שורד". מומלץ להשתמש בפעולה שכתבתם בסעיף א'.

public static int theSurvives(Node<Integer> lst)

שאלה 2

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

סעיף א

כתבו פעולה חיצונית המקבלת מחסנית שאיבריה מטיפוס שלם. הפעולה תחזיר true אם ערכו של כל איבר במחסנית (פרט לאיבר הנמצא בראש המחסנית) גדול מסכום ערכם של כל האיברים שנמצאים לפניו במחסנית (כלומר, מעליו — קרובים יותר לראש), אם לא הפעולה תחזיר false. אפשר להשתמש במבני נתונים נוספים.

public static boolean isGreaterThanSum(Stack<Integer> s)

סעיף ב

מהי הסיבוכיות של הפעולה שכתבתם בסעיף א'? הסבירו את תשובתכם.

שאלה 3

A (תכונה מוגנת x, מתחילה מ-0, method מוסיפה, toString מדפיסה את x). B יורשת מ-A (y=1, method דורסת: מחסירה מ-x ומוסיפה ל-y, toString מדפיסה x.y). C יורשת מ-A (y=10, method דורסת: מוסיפה גם ל-x וגם ל-y, toString מדפיסה x/y). Test.main בונה מערך A[4]={{C,B,A,B}} ומדפיסה/מפעילה method(i+2) על כל תא.

public class A {
    protected int x;
    public A() {
        x = 0;
    }
    public void method(int num) {
        x += num;
    }
    public String toString() {
        return "" + x;
    }
}// end of class A

public class B extends A {
  private int y;
  public B()
  {
      super();
      y = 1;
  }
   public void method(int num)  {
      x -= num;
      y += num;
  }
  public String toString()  {
      return "" + x + "." + y;
  }
}// end of class B

public class C extends A {
  private int y;
  public C()
  {
      super();
      y = 10;
  }
  public void method(int num)  {
      x += num;
      y += num;
  }
  public String toString()  {
        return "" + x + "/"+ y;
  }
} // end of class C

public class Test
{
    public static void main (String [] args)
    {
        A [] array = new A[4];
        array[0] = new C();
        array[1] = new B();
        array[2] = new A();
        array[3] = new B();

        for (int i = 0; i < array.length; i ++)
        {
            System.out.println ("array[" + i + "] = " + array[i]);
            array[i].method(i+2);
            System.out.println ("array[" + i + "] = " + array[i]);
        }
    }
}
סעיף א

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

הנושאים הרשמיים בבחינה 97105

לפי תוכנית הלימודים הרשמית של מה"ט (מבנה נתונים ותכנות מונחה עצמים) — אלו הנושאים שהבחינה נשענת עליהם:

המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).

פתרו את המבחן המלא — עם משוב על כל תשובה

כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.

התחילו לתרגל — חינם ←