נתונה המחלקה TwoStack, ולה שתי תכונות: numbers (מחסנית מטיפוס שלם) ו-sums (מחסנית מטיפוס שלם). היחס בין numbers ל-sums: המספר בסוף המחסנית sums שווה למספר בראש המחסנית numbers; המספר השני מסוף sums שווה לסכום שני המספרים האחרונים ב-numbers; המספר השלישי מסוף sums שווה לסכום שלושת המספרים האחרונים ב-numbers; וכן הלאה עד המספר בראש sums, שהוא סכום כל המספרים ב-numbers. במילים אחרות: sums מחזיקה, מהתחתית לראש, את הסכום המצטבר של numbers מהתחתית שלה כלפי מעלה.
נתונה המחלקה 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<Integer> getNums (int x)
ממשו את הפעולה הפנימית שלהלן: מוחקת את המספר x מן numbers ומתקנת את sums בהתאם. הניחו ש-x קיים במחסנית numbers ומופיע בה רק פעם אחת. יש לשמור על סדר המספרים שנשארו במחסנית numbers.
public void eraseNum (int x)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.