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

שלוש פעולות בנויות זו על גבי זו, כולן משתמשות בטכניקת 'סיבוב תור' כי אין size()/גישה-אקראית: secret סופרת בלי לשנות, what מוצאת מקסימום, something משווה מקסימום מול תור אחר.

public static int Secret(Queue<int> q) {
    Queue<int> temp=new Queue<int>();
    while(!q.IsEmpty()){
        temp.Insert(q.Remove());
    }
    int c=0;
    while(!temp.IsEmpty()){
        c++;
        q.Insert(temp.Remove());
    }
    return c;
}
public static int What(Queue<int> q) {
    int len = Secret(q);
    int temp = q.Remove();
    q.Insert(temp);
    for(int i = 0; i < len; i++){
        int curr = q.Remove();
        q.Insert(curr);
        if(curr > temp)
            temp = curr;
    }
    return temp;
}
public static bool Something(Queue<int> q1, Queue<int> q2) {
    if(Secret(q1)==0)
        return false;
    int temp = What(q1);
    int len = Secret(q2);
    for(int i = 0; i < len; i++){
        int curr = q2.Remove();
        q2.Insert(curr);
        if(temp <= curr)
            return false;
    }
    return true;
}

שלושת התורים לדוגמה. שני קצות כל תור מסומנים בחץ שמאלה בציור המקורי — הכיוון (מי front ומי back) אינו קובע את תוצאות סעיפים א-ג (ראו contentIssues/extraction.risk_resolutions).

a: 3, 1, 5, 1
b: 2, 1, 3, 1
c: 4, 4, 4
סעיף א

עקבו אחרי זימון הפעולה Secret(a) ורשמו מה תהיה תוצאת הזימון.

סעיף ב

עקבו אחרי זימון הפעולה What(b) ורשמו מה תהיה תוצאת הזימון.

סעיף ג

עקבו אחרי זימון הפעולה Something(a, c) ורשמו מה תהיה תוצאת הזימון.

סעיף ד

האם קיימים שני תורים q1, q2 כך ש-Something(q1, q2) = Something(q2, q1)? הסבירו.

סעיף ה

מה מבצעות הפעולות Secret, What, Something?

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

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

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

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