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

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

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

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

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

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

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

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

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

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

שאלה 1

מחסנית של מספרים שלמים נקראת "מאוזנת" אם יש לה אותה כמות מספרים גם חיוביים, גם שליליים וגם אפסים.

סעיף א

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

כותרת הפעולה:

public static boolean isBalanced(Stack<Integer> st)
סעיף ב

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

שאלה 2
סעיף א

כתבו פעולה המקבלת תור של מספרים שלמים ו-2 מספרים נוספים x ו-y. אם אורך התור זוגי, הפעולה תחליף את 2 האיברים האמצעיים לערכים x ו-y. אם אורך התור אי-זוגי, הפעולה תיצור מספר אקראי בין x ל-y (כולל) ותחליף את האיבר האמצעי של התור לערך אקראי שנוצר. שאר איברי התור יישארו ללא שינוי.

לדוגמה: עבור התור q הבא ופרמטרים x=20, y=30

[8, 10, 11, 2, 3, 16, 12, 4] (משמאל לימין; מאומת מול -layout וכלל ההחלפה)

התור q אחרי זימון הפעולה יהיה:

[8, 10, 11, 20, 30, 16, 12, 4]

סעיף ב

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

שאלה 3

סדרה יורדת היא הסדרה שכל איבר החל באיבר ה-3 שווה להפרש של 2 קודמיו בערך מוחלט. לדוגמה:

  • אם 2 האיברים של הסידרה הם 55 ו-34 אז סדרה יורדת תהיה: 55 34 21 13 8 5 3 2 1 1 0 1 1 ....
  • אם 2 האיברים של הסידרה הם 15 ו-40 אז סדרה יורדת תהיה: 15 40 25 10 15 5 10 5 5 0 …

תזכורת: לחישוב הפרש יש להשתמש בפונקציה של ערך מוחלט (Math.abs).

סעיף א

כתבו פעולה המקבלת הפנייה לשרשרת חוליות של מספרים שלמים. הפעולה תבדוק אם ערכים של השרשרת הם סדרה יורדת. אם כן – הפעולה תחזיר ערך true, ולא – הפעולה תחזיר ערך false.

כותרת הפעולה:

public static boolean isDownList (Node<Integer> chain)
סעיף ב

כתבו פעולה המקבלת מספר שלם וחיובי num וזוג מספרים שלמים a ו-b. הפעולה תחזיר הפניה לחוליה הראשונה של שרשרת חוליות שאבריה הם num המספרים הראשונים של סדרה יורדת המתחילה במספרים a ו-b.

כותרת הפעולה:

public static Node<Integer> buildDown (int num, int a, int b)

לדוגמה: עבור הזימון buildDown(9, 55, 34) הפעולה תחזיר הפנייה לחוליה הראשונה של שרשרת החוליות הבאה:

chain → 55 → 3 → 2 → 1 → 8 → 5 → 3 → 2 → 1

⚠️ כך מופיעה השרשרת בתרשים בעמוד זה (מאומת חזותית ב-200dpi, לא תקלת OCR). שימו לב שזו אינה הסדרה 55,34,21,13,8,5,3,2,1 שמתקבלת מהנוסחה שבגוף השאלה (איבר1=55, איבר2=34, איברN=|איברN-1 − איברN-2| עבור N≥3) — וגם אינה תואמת את התרשים המקביל במבחן ה-C# באותו שאלון (עמ' 13), שם השרשרת מוצגת נכון כ-55,34,21,13,8,5,3,2,1. זהו כנראה פגם דפוס בגרסת ה-Java בלבד של שאלון זה. הועתק verbatim מהמקור; ראו fidelity_notes.

סעיף ג

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

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

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

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

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

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

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