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

פעולה רקורסיבית what המוציאה מהתור רק רצף רציף השווה לערך נתון, ופעולה secret המשתמשת בה כדי לצבור מכפלות 'ערך·אורך-ריצה' ולבנות מהן תור חדש. שני סעיפי מעקב: what לבדה, ו-secret כולל שחזור התור המקורי מתוך הפלט.

public  static  int  What (Queue<int> q , int x)
{
if ( q.IsEmpty() || x != q.Head() )
return 0;
    x = q.Remove();
    return   1 + What(q , x);
}

public  static  int  Secret(Queue<int> q)
{
  if (q.isEmpty())  return 0;
  int x = q.Head();
  int z = x * What(q, x);
  int y = 1 + Secret(q);
  q.Insert(z);
  return y;
}
סעיף א

עקבו אחר ביצוע הפעולה what (ראו קוד לעיל). ענו:

  1. מה יחזיר זימון הפעולה what(q,5) עבור התור q:[5,5,5,3,3,2,8] (5 בראש התור)? יש להראות מעקב אחרי ביצוע הפעולה.
  2. אחרי זימון הפעולה what(q, x) עבור התור q לא ריק, התור q נשאר ללא שינוי. האם הטענה 'ערך x לא מופיע בתור' נכונה? הסבירו את תשובתכם.
  3. תנו דוגמה של תור q שעבורו זימון הפעולה what(q, 7) תחזיר 4. איך ייראה התור אחרי זימון הפעולה?
  4. מה מבצעת הפעולה?
סעיף ב

נתונה הפעולה secret (ראו קוד לעיל). עקבו אחר הפעולה secret(q) עבור התור q:[5,5,1,1,4,4,4,5,6] (5 בראש התור). אין צורך לפרט את המעקב אחרי הפעולה what. ענו:

  1. מהו הערך המוחזר מהפעולה secret?
  2. איך ייראה התור בסיום הפעולה secret?
  3. אחרי זימון הפעולה secret(q) התור q נראה כך: q:[6,16,2,3] (6 בראש התור). איך נראה התור q לפני זימון הפעולה?
שאלות ותגובות על השאלה

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

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

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