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

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

תאריך הבחינה: 28.7.2022

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

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

למגמת הנדסת תוכנה — מבנה נתונים ותכנות מונחה עצמים. נבחנים ב-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 המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. הפעולה תחזיר הפניה לחוליה הראשונה של "שרשרת ההפרשים".

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

סעיף ב

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

public static int theSurvives(Node<Integer> lst)

שאלה 2

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

סעיף א

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

public static boolean isGreaterThanSum(Stack<Integer> s)

סעיף ב

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

שאלה 3
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 וכתבו מה יהיה הפלט של הפעולה. חובה להציג באיור את כל העצמים שנוצרו ואת ערכי התכונות שלהם.

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

לפי סדר המבחן. לוחצים על שאלה והמבחן נפתח בה: עונים, רואים פתרון מלא ומוסבר, וממשיכים לשאלה הבאה.

  1. שאלה 1

    "שרשרת ההפרשים" — differenceList ו-theSurvives

  2. שאלה 2

    בדיקת תכונת מחסנית — כל איבר גדול מסכום הקודמים לו

  3. שאלה 3

    מעקב אחר ירושה ודריסה — מחלקות A, B, C ו-Test

  4. שאלה 4

    דריסה, העמסה ו-downcast בין אחיות — מחלקות A, B, C ו-Driver

  5. שאלה 5

    פירמידת ליצנים — Pyramid, isStable ו-addClown

  6. שאלה 6

    היררכיית צורות עם ממשקים — Shape, Point, Circle, Square, Rectangle

  7. שאלה 7

    שני זימונים רקורסיביים על עץ בינרי — what1 ו-what2

  8. שאלה 8

    תור, ערך אחרון בתור, ושרשרת תורים — sumQueue, lastValue ו-processQueueChain

  9. שאלה 9

    היררכיית דירות למכירה — Appartment, GardenApp, Penthouse, Luxary

  10. שאלה 10

    רשת מצלמות מהירות — SpeedCamera ו-SpeedCameraNetwork

  11. שאלה 11

    טענות על עץ בינארי שעבורו הפעולה what מחזירה true

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

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

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

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

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

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