אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2026 · קיץ מועד Special · שאלה 2כל שאלות המבחן ←
תכנות מונחה עצמיםמחלקות ואובייקטים

נתונות המחלקות Cube (size, type) ו-Box (מערך cubes בגודל 3 + count; הבנאי ו-add/Add נתונים). יש לממש isPerfect הבודקת אם קופסה מכילה 3 קוביות מאותו סוג וגודל, ואז לארוז קוביות מתור לקופסאות לפי סדר הגעתן (packBox, packAll).

דוגמה לתור q (ראש..סוף) לסעיף ב

head: Cube(1,'a'), Cube(2,'a'), Cube(2,'b'), Cube(1,'a'), Cube(1,'a'), Cube(1,'a'), Cube(3,'b'), Cube(3,'a') :tail

packBox(q) result + queue state after, per example

Box returned: count=2, cubes=[Cube(1,'a'),Cube(2,'a'),null]; queue after: Cube(2,'b'),Cube(1,'a'),Cube(1,'a'),Cube(1,'a'),Cube(3,'b'),Cube(3,'a')

packAll(q) result for the full original queue -- 4 boxes, prints 'perfect'

Box1{cubes=[1a,2a,null],count=2} Box2{cubes=[2b,null,null],count=1} Box3{cubes=[1a,1a,1a],count=3} Box4{cubes=[3b,3a,null],count=2} -- Box3 is 'perfect'
סעיף א

קופסה נקראת "מושלמת" אם יש בה 3 קוביות מאותו הסוג וגם מאותו הגודל. ממשו את הפעולה הפנימית שלפניכם במחלקה Box, המחזירה true אם הקופסה מושלמת, אחרת false.

public boolean isPerfect ()

סעיף ב(1)

במפעל צעצועים אורזים קוביות לקופסאות לפי סדר הגעתן. ממשו את הפעולה החיצונית שלפניכם: מקבלת תור של קוביות ומחזירה עצם מסוג Box. הפעולה תכניס קוביות מהתור (לפי סדר הופעתן) לקופסה, כל עוד פעולת ההכנסה אפשרית (לפי add/Add). אם לא ניתן להכניס את הקובייה הבאה בתור, הפעולה תעצור ותחזיר את הקופסה שנוצרה. הערה: בסיום הפעולה סדר הקוביות בתור המקורי נשמר, ללא הקוביות שהוכנסו לקופסה.

public static Box packBox (Queue<Cube> q)

סעיף ב(2)

כתבו פעולה חיצונית בשם packAll בשפת Java או PackAll בשפת C# המקבלת תור q של עצמים מסוג Cube. הפעולה: תחזיר תור מסוג Box לאחר הכנסת כל הקוביות לקופסאות לפי הכללים לעיל; תדפיס perfect לאחר הכנסת כל הקוביות לקופסאות, אם קיימת לפחות קופסה אחת "מושלמת", אחרת תדפיס not perfect.

public static Queue<Box> packAll (Queue<Cube> q)

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

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

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

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