בי מאסטר (Bmaster)מאגר שאלות בגרותשאלות נפוצותמדריכיםארכיון בגרויות
תפריט

חומרי לימוד

מאגר שאלות בגרותשאלות נפוצותמדריכיםארכיון בגרויות
חזרה למאגר2022 קיץ מועד א

מבנה נתונים כפול: מחסנית מספרים ומחסנית סכומים

שאלה קודמתשאלה הבאה
שאלה 5מבני נתונים2022 קיץ מועד א

מבנה נתונים כפול: מחסנית מספרים ומחסנית סכומים

נתונה המחלקה TwoStack, ולה שתי תכונות:

  • numbers — מחסנית מטיפוס שלם
  • sums — מחסנית מטיפוס שלם

היחס בין המחסנית sums למחסנית numbers הוא כמפורט להלן:

  • המספר בסוף המחסנית sums שווה למספר בסוף המחסנית numbers.
  • המספר השני מסוף המחסנית sums שווה לסכום שני המספרים האחרונים במחסנית numbers.
  • המספר השלישי מסוף המחסנית sums שווה לסכום שלושת המספרים האחרונים במחסנית numbers.
  • וכן הלאה עד המספר בראש המחסנית sums, השווה לסכום כל המספרים במחסנית numbers.

דוגמה (מהראש לסוף):

numbers-934-12sums-18512

(סוף sums = 2 = סוף numbers; המספר הבא ב-sums: 2+(-1)=1; אחריו 2+(-1)+4=5; אחריו 2+(-1)+4+3=8; ראש sums: 2+(-1)+4+3+(-9)=-1.)

הניחו שבשתי המחלקות Stack<Integer>/Stack<int> יש פעולות get/Get ו-set/Set.

משימות

אמשימה אcode

ממשו את הפעולה הפנימית שלהלן:

java
1public Stack<Integer> getNums (int x)
csharp
1public Stack<int> GetNums (int x)

הפעולה מקבלת מספר x השווה לאחד המספרים במחסנית sums, ומחזירה מחסנית חדשה מטיפוס שלם, שבה מופיעים המספרים מן המחסנית numbers שסכומם שווה למספר x. הניחו שהמספר x קיים במחסנית sums ומופיע בה רק פעם אחת.

דוגמה: בעבור המחסניות שלעיל ו-x = 5 (המספר השלישי מלמטה במחסנית sums), הפעולה תחזיר מחסנית שבה (מהראש לסוף): 4, -1, 2 (שסכומם 5).

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

במשימה בcode

ממשו את הפעולה הפנימית שלהלן:

java
1public void eraseNum (int x)
csharp
1public void EraseNum (int x)

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

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

שאלה 5מבני נתונים2022 קיץ מועד א

מבנה נתונים כפול: מחסנית מספרים ומחסנית סכומים

נתונה המחלקה TwoStack, ולה שתי תכונות:

  • numbers — מחסנית מטיפוס שלם
  • sums — מחסנית מטיפוס שלם

היחס בין המחסנית sums למחסנית numbers הוא כמפורט להלן:

  • המספר בסוף המחסנית sums שווה למספר בסוף המחסנית numbers.
  • המספר השני מסוף המחסנית sums שווה לסכום שני המספרים האחרונים במחסנית numbers.
  • המספר השלישי מסוף המחסנית sums שווה לסכום שלושת המספרים האחרונים במחסנית numbers.
  • וכן הלאה עד המספר בראש המחסנית sums, השווה לסכום כל המספרים במחסנית numbers.

דוגמה (מהראש לסוף):

numbers-934-12sums-18512

(סוף sums = 2 = סוף numbers; המספר הבא ב-sums: 2+(-1)=1; אחריו 2+(-1)+4=5; אחריו 2+(-1)+4+3=8; ראש sums: 2+(-1)+4+3+(-9)=-1.)

הניחו שבשתי המחלקות Stack<Integer>/Stack<int> יש פעולות get/Get ו-set/Set.

משימות

אמשימה אcode

ממשו את הפעולה הפנימית שלהלן:

java
1public Stack<Integer> getNums (int x)
csharp
1public Stack<int> GetNums (int x)

הפעולה מקבלת מספר x השווה לאחד המספרים במחסנית sums, ומחזירה מחסנית חדשה מטיפוס שלם, שבה מופיעים המספרים מן המחסנית numbers שסכומם שווה למספר x. הניחו שהמספר x קיים במחסנית sums ומופיע בה רק פעם אחת.

דוגמה: בעבור המחסניות שלעיל ו-x = 5 (המספר השלישי מלמטה במחסנית sums), הפעולה תחזיר מחסנית שבה (מהראש לסוף): 4, -1, 2 (שסכומם 5).

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

במשימה בcode

ממשו את הפעולה הפנימית שלהלן:

java
1public void eraseNum (int x)
csharp
1public void EraseNum (int x)

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

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