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

"איבר קסם" הוא איבר בתור מספרים שערכו שווה לסכום הערכים של האיבר שלפניו והאיבר שאחריו; האיבר הראשון והאחרון בתור אינם יכולים להיות "איברי קסם" (אין להם שכן משני הצדדים). בשני הסעיפים אסור להשתמש במערך או ברשימה מקושרת — פתרון שמשתמש בהם לא יזוכה בנקודות; פותרים אך ורק עם פעולות התור (insert/remove/head/isEmpty). לדוגמה: התור (מראש לסוף) 5, 11, 6, 9, 3, 6, 3.

התור שבדוגמה (מראש התור לסופו), המקומות 1 עד 7:

התור שבדוגמה

ראש התור →  5 | 11 | 6 | 9 | 3 | 6 | 3  ← סוף התור
   מקום:     1    2   3   4   5   6   7
סעיף א

כתבו פעולה ששמה isMagic בשפת Java או IsMagic בשפת C#, המקבלת תור – q מטיפוס שלם, ומספר שלם – m הגדול מ-0 וקטן או שווה לגודל התור. הפעולה תחזיר true אם האיבר במקום ה-m בתור הוא "איבר קסם", אחרת היא תחזיר false. הערות: – בסיום הפעולה חובה לשמור על מבנה התור כפי שהתקבל. – אין להשתמש בסעיף זה במערך או ברשימה מקושרת. פתרון הכולל שימוש בהם לא יזוכה בנקודות. לדוגמה: עבור התור שלפניכם (מראש התור לסופו): 5, 11, 6, 9, 3, 6, 3 עבור m = 1 הפעולה תחזיר false (המספר הראשון בתור אינו "איבר קסם"). עבור m = 2 הפעולה תחזיר true (5 + 6 = 11). עבור m = 3 הפעולה תחזיר false (11 + 9 ≠ 6).

public static bool IsMagic (Queue<int> q, int m)

סעיף ב

כתבו פעולה ששמה nMagic בשפת Java או NMagic בשפת C#, המקבלת תור מטיפוס שלם – q, ומספר שלם n הגדול מ-0 וקטן או שווה לגודל התור. הפעולה תחזיר true אם כל האיברים הנמצאים במקומות שהם כפולה של n (המקום ה-n בתור, המקום ה-2n בתור וכן הלאה בדילוגים של n מקומות) הם "איברי קסם". אחרת הפעולה תחזיר false. אפשר להשתמש בפעולה שכתבתם בסעיף א. הערות: – בפעולה זו אין צורך לשמור על התור שהתקבל. – אין להשתמש בסעיף זה במערך או ברשימה מקושרת. פתרון הכולל שימוש בהם לא יזוכה בנקודות. דוגמאות: עבור התור שבדוגמה שלעיל: עבור n = 2 הפעולה תחזיר true מכיוון שכל האיברים הנמצאים במקומות שהם כפולה של 2 (2, 4, 6) הם "איברי קסם". עבור n = 4 הפעולה תחזיר true מכיוון שהאיבר במקום ה-4 הוא "איבר קסם" (אין בתור איברים נוספים במקומות שהם כפולה של 4). עבור n = 3 הפעולה תחזיר false מכיוון שהאיבר במקום ה-3 אינו "איבר קסם".

public static bool NMagic (Queue<int> q, int n)

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

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

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

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