אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2022 · קיץ מועד א · שאלה 5כל שאלות המבחן ←
מבנים לינארייםמחסניות

נתונה המחלקה TwoStack, ולה שתי תכונות: numbers (מחסנית מטיפוס שלם) ו-sums (מחסנית מטיפוס שלם). היחס בין numbers ל-sums: המספר בסוף המחסנית sums שווה למספר בראש המחסנית numbers; המספר השני מסוף sums שווה לסכום שני המספרים האחרונים ב-numbers; המספר השלישי מסוף sums שווה לסכום שלושת המספרים האחרונים ב-numbers; וכן הלאה עד המספר בראש sums, שהוא סכום כל המספרים ב-numbers. במילים אחרות: sums מחזיקה, מהתחתית לראש, את הסכום המצטבר של numbers מהתחתית שלה כלפי מעלה.

המחסניות המקבילות בדוגמת השאלון (numbers מלמטה: 2,-1,4,3,-9)

numbers (top->bottom): -9,3,4,-1,2   sums (top->bottom): -1,8,5,1,2
סעיף א

ממשו את הפעולה הפנימית שלהלן: מקבלת מספר x השווה לאחד המספרים במחסנית sums, ומחזירה מחסנית חדשה מטיפוס שלם שבה מופיעים המספרים מן numbers שסכומם שווה ל-x. הניחו ש-x קיים במחסנית sums ומופיע בה רק פעם אחת. אפשר לשנות את המחסניות של המחלקה (כסקראצ'); אין חשיבות לסדר המספרים במחסנית המוחזרת.

public Stack<int> GetNums (int x)

סעיף ב

ממשו את הפעולה הפנימית שלהלן: מוחקת את המספר x מן numbers ומתקנת את sums בהתאם. הניחו ש-x קיים במחסנית numbers ומופיע בה רק פעם אחת. יש לשמור על סדר המספרים שנשארו במחסנית numbers.

public void EraseNum (int x)

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

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

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

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