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

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

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

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

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

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

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

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

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

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

שאלה 1

שתי פעולות על שרשרת חוליות של מספרים שלמים: toCircle הופכת שרשרת לינארית לשרשרת מעגלית; toLine מקבלת הפניה לחוליה כלשהי בשרשרת מעגלית והופכת אותה לשרשרת לינארית, כך שהחוליה שהתקבלה כפרמטר היא הראשונה.

השרשרת לדוגמה (זהה לשני הסעיפים): 1,10,2,12,35,11,81,45 — 8 חוליות, מאומתת מול הדפסת הספרות בטקסט הגולמי (עמ' 2 java / עמ' 17 c#).

לפני (סעיף א', שרשרת לינארית): chain → 1 → 10 → 2 → 12 → 35 → 11 → 81 → 45 → null
אחרי (סעיף א'): שרשרת מעגלית 1 → 10 → 2 → 12 → 35 → 11 → 81 → 45 → (חזרה ל-1)
סעיף א

כתבו פעולה המקבלת הפנייה לחוליה ראשונה בשרשרת חוליות של מספרים שלמים והופכת את השרשרת לשרשרת "מעגלית", כך שהחוליה אחרי החוליה האחרונה תהיה שוב החוליה הראשונה. כותרת הפעולה: public static void toCircle(Node<Integer> chain)

סעיף ב

כתבו פעולה המקבלת הפניה לחוליה כלשהי בשרשרת חוליות מעגלית של מספרים שלמים והופכת אותה לשרשרת לינארית, כך שהחוליה שההפניה אליה התקבלה כפרמטר תהיה חוליה ראשונה של השרשרת, והחוליה שהייתה לפניה תהיה החוליה האחרונה בשרשרת. כותרת הפעולה: public static void toLine(Node<Integer> chain)

שאלה 2

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

המחסנית לדוגמה (מהראש לתחתית) — אומתה מול הטקסט הגולמי (עמ' 3 java / עמ' 18 c#).

לפני (ראש→תחתית): 5, 7, 10, 2, 12, 6
אחרי (ראש→תחתית): 12, 5, 7, 10, 6, 2
סעיף א

כתבו פעולה המקבלת מחסנית של מספרים שלמים. הפעולה תעביר את הערך הקטן ביותר לתחתית המחסנית ואת הערך הגדול ביותר לראש המחסנית. אפשר להניח שהערך הקטן ביותר וגם הערך הגדול ביותר מופיעים במחסנית פעם אחת בלבד. השאלון אינו נותן שם/כותרת לפעולה — נבחרה כאן הכותרת public static void minToBottomMaxToTop(Stack<Integer> st) (ראו contentIssues).

סעיף ב

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

שאלה 3

שתי מחלקות One ו-Two (Two extends One), כל אחת עם שני בנאים מועמסים ופעולות sum/setNum שנדרסות ב-Two. יש לעקוב אחרי הפעולה הראשית ולרשום את כל הפלט, כולל שורות ההדפסה שבתוך הבנאים עצמם.

public class One  {
    private int num1=0;
    private int num2=0;
    protected static int count =0;

    public One(int num)    {
        this.num1 = num;
        this.num2 = num;
        count++;
        System.out.println ("One ctor1");
    }

    public One(int num1, int num2)    {
        this.num1 = num1;
        this.num2 = num2;
        count++;
        System.out.println ("One ctor2");
    }

    public int sum()    {return this.num1+this.num2;}
    public void setNum(int num)    { this.num2 = num;}
    public static int getCount()    { return count;    }
}// end of class One

public class Two extends One  {
    private int num3 = 0;

    public Two(int num)  {
        super (num);
        this.num3 = num;
        System.out.println ("Two ctor1");
    }

    public Two(int num1, int num2, int num3)  {
        super(num1, num2);
        this.num3 = num3;
        System.out.println ("Two ctor2");
    }

    public int sum()  {return super.sum()+this.num3; }
    public void setNum(int num)   {this.num3 = num; }
    public static int getCount()  {return count;    }
}// end of class Two

public class Run  {
    public static void main (String [] args)     {
            One f1 = new One(10);
            One f2 = new One (10, 20);
            Two s1 = new Two(1);
            One f3 = new Two(2);
(1)         System.out.println ("count= " + One.getCount());
            f2 = s1;
(2)         System.out.println ("sum= " + f2.sum());
            s1.setNum(2);
(3)         System.out.println ("sum= " + s1.sum());
(4)         System.out.println ("sum= " + f2.sum());
            f2.setNum(4);
(5)         System.out.println ("sum= " + f2.sum());
            f1.setNum(4);
(6)         System.out.println ("sum= " + f1.sum());
(7)         System.out.println ("count= " + Two.getCount());
    }
}
סעיף א

מה הפלט המתקבל לאחר הפעלת השיטה main שבמחלקה Run? כתבו את מספר השורה ואז את הפלט המתקבל משורה זו. אם יש שגיאת קומפילציה, כתבו אותה.

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

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

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

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

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

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