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

secret(s1,s2): אם אחת ריקה — 0; אם top(s1)>top(s2) — pop את s1 ומחזיר s1.pop()+s2.top()+secret(s1,s2); אחרת — s1.top()+s2.pop()+secret(s1,s2). כל שלב מוסיף את סכום שני הראשים הנוכחיים, ומקדם (pop) רק את המחסנית שההשוואה 'הפסידה בה' (או s2 בתיקו).

public static int Secret(Stack<int> s1, Stack<int> s2)
{
    if(s1.IsEmpty() || s2.IsEmpty())
        return 0;
    if(s1.Top() > s2.Top())
        return s1.Pop() + s2.Top() + Secret(s1, s2);
    else
        return s1.Top() + s2.Pop() + Secret(s1, s2);
}

שתי המחסניות שבסעיף א׳ (מהאיור בעמוד — ראש כל מחסנית הוא השורה העליונה בציור)

s2 (top..bottom): 5, 2, 4, 3
s1 (top..bottom): 7, 6, -1, 1

שתי המחסניות שבסעיף ג׳ (מהאיור בעמוד)

s2 (top..bottom): 1, 2, 3, 4
s1 (top..bottom): 4, X, -1
סעיף א

נתונות שתי המחסניות הבאות (ראו איור). עקבו אחרי זימון הפעולה secret(s1, s2) וכתבו מה תחזיר הפעולה. יש להראות שינויים בתכנים של המחסניות.

סעיף ב

נתונה הטענה הבאה: secret(s1, s2) == secret(s2, s1). האם הטענה נכונה לכל זוג מחסניות של מספרים שלמים s1 ו-s2? נמקו את תשובתכם. אם הטענה לא נכונה, יש להביא דוגמה של זוג מחסניות s1 ו-s2 מתאים.

סעיף ג

נתונות שתי המחסניות הבאות (ראו איור, s1 מכיל את X). האם קיים ערך X כזה שתוצאת זימון הפעולה secret(s1, s2) תהיה 19? הסבירו את תשובתכם.

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

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

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

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