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

פעולות עזר נתונות על מחסנית: numOf, randChoice, createSmall, createLarge, eraseSmalls, eraseLarges. what רקורסיבית מקבלת מחסנית s עם מספר אי-זוגי של מספרים שונים, בוחרת ציר אקראי ומצמצמת לכיוון הצד הגדול יותר עד שנמצא איזון — זהו אלגוריתם מציאת חציון.

public static int what(Stack<Integer> s) {
    int a = randChoice(s);
    Stack<Integer> m1 = createSmall(s,a);
    int k1 = numOf(m1);
    Stack<Integer> m2 = createLarge(s,a);
    int k2 = numOf(m2);
    if (k1 > k2) {
        eraseSmalls(m1, k2+1);
        return what(m1);
    }
    if (k2 > k1) {
        eraseLarges(m2, k1+1);
        return what(m2);
    }
    return a;
}

המחסנית s לסעיף א' (מ-150dpi crop עמ' 12–13): קריאה משמאל לימין = מראש המחסנית לתחתיתה (חץ כתום מסמן ראש בצד שמאל).

ראש המחסנית → 43, -3, 8, 9, 12, -9, 7, 3, 1 ← תחתית המחסנית
סעיף א

עקבו אחרי זימון הפעולה what(s)/What(s) עבור המחסנית הבאה (ראה איור) ורשמו מה תהיה תוצאת הזימון. יש להראות ערכי משתנים ותכנים של מחסניות בכל זימון הרקורסיבי.

סעיף ב

מה מבצעת הפעולה what/What עבור מחסנית המכילה מספר אי-זוגי של מספרים שלמים שכולם שונים זה מזה?

סעיף ג

ממשו את הפעולה createSmall (המוגדרת ברשימת הפעולות בראש השאלה).

public static Stack<Integer> createSmall(Stack<Integer> m, int a)

סעיף ד

ממשו את הפעולה randChoice (המוגדרת ברשימת הפעולות בראש השאלה).

public static int randChoice(Stack<Integer> m)

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

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

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

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