בגרות מדעי המחשב 899271, קיץ 2023 מועד א'
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
לתלמידי ותלמידות היחידות המתקדמות במדעי המחשב — כולל שלושת מסלולי הבחירה: אלגוריתמים, מודלים חישוביים ותכנות מונחה עצמים.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 9 שאלות המבחן — את כולן תוכלו לפתור אונליין.
לפניכם תור (Queue) של מספרים שלמים. בנוסף לפעולות התור הרגילות (הוספה, הוצאה, בדיקה אם ריק) קיימת גם הפעולה החיצונית size()/Size() המחזירה את מספר האיברים בתור, ואפשר להשתמש בה בלי לממש אותה. בשאלה זו אסור להשתמש במערך או ברשימה מקושרת - התרגיל מתמקד בעבודה נקייה עם תור בלבד. אין צורך לשמור על סדר האיברים בתור בסיום הפעולה.
ממשו את הפעולה החיצונית שלפניכם, המקבלת תור q ומספר שלם x, ובודקת אם קיימים בתור q שני מספרים (בשני מקומות שונים בתור) שסכומם שווה לערך הפרמטר x. אם כן - הפעולה מחזירה true, אחרת - false. הניחו כי בתור q יש שני איברים לפחות.
public static boolean twoSum (Queue<Integer> q, int x)
המחלקה NumCount מייצגת מספר וכמות מופעים שלו, ולה שתי תכונות: num (ערך מספרי) ו-count (מספר המופעים של הערך, שלם גדול או שווה ל-0). למחלקה קיימות get/set לכל אחת מהתכונות, ופעולת בנאי המקבלת ערכים עבור שתי התכונות. המחלקה OrderedList מייצגת שרשרת ממוינת אחת, ולה תכונה אחת: lst - מצביע על ראש של שרשרת חוליות מטיפוס NumCount, שרשרת ממוינת לפי סדר עולה של ערך התכונה num בכל חוליה (ערך התכונה num שונה בכל חוליה).
דוגמת שרשרת OrderedList ראשונית המשמשת את שני סעיפי א(1) ו-א(2) בשאלון: שלוש חוליות NumCount עם num=3 count=9, num=5 count=1, num=8 count=2.
lst -> [num:3, count:9] -> [num:5, count:1] -> [num:8, count:2] -> null
ממשו במחלקה OrderedList את הפעולה הפנימית שלפניכם, המוסיפה את הערך x לשרשרת באופן הבא: אם קיימת בשרשרת חוליה שהתכונה num שלה שווה ל-x, הפעולה תגדיל ב-1 את התכונה count של אותה חוליה (כמות המופעים). אם השרשרת ריקה, או שלא קיימת בה חוליה שהתכונה num שלה שווה ל-x, הפעולה תכניס חוליה חדשה, שבה התכונה num תהיה שווה ל-x והתכונה count תהיה שווה ל-1, במיקום השומר את הסדר העולה של השרשרת.
public void insertNum (int x)
מהי סיבוכיות זמן הריצה של הפעולה שכתבתם בסעיף א(1)? נמקו את תשובתכם.
'ערך המופיע ה-n' הוא הערך שמופיע במקום ה-n לפי הסדר המתקבל מהתחלת השרשרת (בשקלול כמות המופעים - count - של כל ערך). לדוגמה: עבור השרשרת שלפניכם ו-n=7, הפעולה תחזיר את הערך 8. ממשו במחלקה OrderedList את הפעולה הפנימית שלפניכם, המקבלת את המספר n, ומחזירה את ערך המופע ה-n בשרשרת. הניחו ש'ערך המופיע ה-n' קיים בשרשרת.
public int valueN (int n)
'מספר ראשוני' הוא מספר שהמתחלק רק בעצמו וב-1 (גם המספרים 1 ו-2 הם ראשוניים). לפניכם הפעולה החיצונית isPrime/IsPrime - אפשר להשתמש בפעולה בלי לממש אותה. חתימתה: Java - public static boolean isPrime (int num), C# - public static bool IsPrime (int num). הפעולה מחזירה true אם num הוא ראשוני, אחרת מחזירה false.
שלוש תוצאות אפשריות לתום addNodes(tr) עבור הערכים 5, 100, 100 (שתי אפשרויות שונות לפירוק 100).
tr(100)
├── 2
└── 50
tr(100)
├── 25
└── 4
tr(5) (עלה, ללא בנים - כי 5 ראשוני)
עץ הפירוק המלא שמתקבל מהפעלת what/What על עלה עם ערך 150 (חלק ב, נגזר מהאלגוריתם הרקורסיבי הנתון).
150
├── 2
└── 75
├── 3
└── 25
├── 5
└── 5
ממשו את הפעולה החיצונית שלפניכם. הפעולה מקבלת צומת ללא בנים (עלה) שערכו גדול מ-0. אם ערך הצומת הוא מספר ראשוני, הפעולה מחזירה false. אחרת, הפעולה מוסיפה לצומת שני בנים שהמכפלה של ערכיהם שווה לערך הצומת המקורי, והערך של כל אחד מהם גדול מ-1. לאחר ההוספה הפעולה מחזירה true.
public static boolean addNodes (BinNode<Integer> tr)
נתונה הפעולה החיצונית what/What שלפניכם (עוברת רקורסיבית: אם addNodes(tr) מחזירה true - קוראת לעצמה על tr.getLeft() ו-tr.getRight()). סרטטו את העץ כפי שייראה בתום הפעלת what/What עבור צומת tr - עלה ללא בנים - שערכו 150. יש להראות מעמיק.
הסבירו מה מבצעת הפעולה what/What.
כל שאלות המבחן — 9 שאלות, כל אחת עם פתרון מלא
לפי סדר המבחן. לוחצים על שאלה ועוברים לעמוד שלה: השאלה המלאה, השרטוט, ופתרון מלא ומוסבר צעד אחרי צעד.
- שאלה 4
שאלה — שני מספרים שסכומם x בתור
- שאלה 5
שאלה — רשימה ממוינת של מספרים וספירות (OrderedList)
- שאלה 6
שאלה — פירוק לגורמים בעץ בינארי (addNodes)
- שאלה 7
שאלה — טענות נכון/לא נכון על DFS/BFS ועץ פורש מקסימלי
- שאלה 8
שאלה — רשת רחובות NET - מסלול הליכה קצר ביותר
- שאלה 9
שאלה — שפות פורמליות מעל {a,b} - פעולות ורגולריות
- שאלה 10
שאלה — מכונת טיורינג לפעולת Generate על שני מספרים בינאריים
- שאלה 11
שאלה — מערכת תשלומים במסעדה - IPayment ומחלקות מיישמות
- שאלה 12
שאלה — ירושה, פולימורפיזם ו-static ב-First/Second
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←