בגרות מדעי המחשב 899271, קיץ 2020 מועד א'
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
לתלמידי ותלמידות היחידות המתקדמות במדעי המחשב — כולל שלושת מסלולי הבחירה: אלגוריתמים, מודלים חישוביים ותכנות מונחה עצמים.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 7 שאלות המבחן — את כולן תוכלו לפתור אונליין.
נתונה מחסנית stk מטיפוס שלם, שבה כל המספרים אינם שליליים ואינם עולים על 9 (כלומר כל אחד מהם הוא ספרה בודדת) — הנחה זו תקפה לסעיף א בלבד; בסעיף ב המספרים במחסנית יכולים להיות כל מספר שלם לא-שלילי. לשני הסעיפים משותף מבנה עבודה זהה: לסרוק מחסנית מבלי להרוס אותה — לפופ, לבדוק/לרקורס, ולפוש בחזרה בדיוק כפי שהיה.
דוגמת השאלון לסעיף א — num=8 והמחסנית stk שלפניך (מהראש לתחתית)
stk (top->bottom): 162, 251, 568, 77 isExist(stk,8) -> true (ל-568 יש ספרת אחדות 8)
כתוב פעולה חיצונית isExist בשפת Java או IsExist בשפת C#. הפעולה מקבלת מחסנית stk מטיפוס שלם (שבה כל המספרים ספרות בודדות, 0 עד 9 כולל, ואינם שליליים) ומספר שלם num בין 0 ל-9 (כולל). הפעולה תחזיר true אם יש במחסנית מספר שספרת האחדות שלו שווה ל-num, אחרת תחזיר false. הערה: חובה לשמור על מבנה המחסנית עם סיום הפעולה.
public static boolean isExist (Stack<Integer> stk, int num)
נגדיר: הספרה המשמעותית במספר היא הספרה השמאלית ביותר שלו (לדוגמה: הספרה המשמעותית של 32 היא 3, ושל 541 היא 5). לשם פתרון סעיף זה בלבד תוכל להשתמש בפעולה הבאה בלי לממש אותה: public static Stack<Integer> clone (Stack<Integer> s) בשפת Java או public static Stack<int> Clone (Stack<int> s) בשפת C# — מקבלת מחסנית ומחזירה העתק מדויק שלה, בלי לשנות את המחסנית המקורית. כתוב פעולה חיצונית allExist בשפת Java או AllExist בשפת C#, המקבלת מחסנית stk מטיפוס שלם שאינה ריקה (המספרים במחסנית stk אינם שליליים). הפעולה תחזיר true אם כל הספרות המשמעותיות של המספרים שבמחסנית מופיעות כספרת האחדות של מספר כלשהו במחסנית, אחרת תחזיר false.
public static boolean allExist (Stack<Integer> stk)
לקראת תחרות ריצת מרתון הוגדרה מחלקה Competitor המייצגת מתחרה שסיים את המסלול. למחלקה שלוש תכונות: minutes — מספר הדקות שנדרשו למתחרה לסיים (אינו מוגבל ל-60), מטיפוס שלם; seconds — מספר השניות שנדרשו (0 עד 59 כולל), מטיפוס שלם; name — שם המתחרה, מטיפוס מחרוזת. לכל תכונה מוגדרות get/set. נוסף על כך הוגדרה מחלקה Race המאגדת אוסף של כל המתחרים שסיימו את המסלול; מספר המתחרים אינו ידוע מראש. הנחה: אין שני מתחרים שסיימו בזמן זהה. לכל פעולה במחלקה Race יש הנחיית סיבוכיות מחייבת (n = מספר המתחרים באוסף): add הוא O(n), ורק אופן המימוש של add הוא שקובע אם rank יוכל לעמוד גם הוא ב-O(n) — שתי הפעולות תלויות זו בזו.
כתוב את תכונות המחלקה Race.
לכל פעולה יש הנחיית סיבוכיות זמן ריצה; n הוא מספר המתחרים באוסף; חובה לעמוד בדרישות הסיבוכיות. ממש את פעולות המחלקה Race המופיעות בממשק המחלקה: public void add (Competitor x) — מקבלת מתחרה ומוסיפה אותו לאוסף, O(n) (והסיבוכיות של rank תלויה ישירות באופן המימוש כאן); public String rank (int x) — מקבלת דירוג (1 = המתחרה שסיים בזמן הקצר ביותר, 2 = השני הקצר ביותר וכן הלאה) ומחזירה את שם המתחרה בדירוג זה, O(n). הנח שקיים מתחרה בדירוג המבוקש. הערה: אין למחוק איברים מהאוסף.
public void add (Competitor x) public String rank (int x)
נגדיר: "עץ מספרים" הוא עץ בינארי מטיפוס שלם, שכל צומת בו מכיל ספרה בין 1 ל-9 (כולל), וכל מסלול בעץ מעלה לשורש מייצג מספר: העלה מייצג את ספרת האחדות, הרמה שמעליו מייצגת את ספרת העשרות, וכן הלאה עד השורש של העץ.
דוגמת השאלון 1: שורש 1, בן שמאלי 2 (בנים 3,2), בן ימני 9 (בן 5) — המספרים המיוצגים: 195, 122, 123
1
/ \
2 9
/ \ \
3 2 5
דוגמה נוספת: שורש 2, בן שמאלי 1 (בנים 6,6), בן ימני 6 (עלה) — המספרים המיוצגים: 26, 216, 216
2
/ \
1 6
/ \
6 6
כתוב פעולה חיצונית printAll בשפת Java או PrintAll בשפת C#. הפעולה מקבלת עץ tree מטיפוס עץ מספרים שלם, ותדפיס את כל המספרים שהעץ מייצג. אם tree הוא null הפעולה לא תדפיס דבר. הערה: אין חשיבות לסדר שבו המספרים מודפסים.
public static void printAll (BinNode<Integer> tree)
כל שאלות המבחן — 7 שאלות, כל אחת עם פתרון מלא
לפי סדר המבחן. לוחצים על שאלה ועוברים לעמוד שלה: השאלה המלאה, השרטוט, ופתרון מלא ומוסבר צעד אחרי צעד.
- שאלה 4
שאלה — מחסנית ספרות — isExist ו-allExist
- שאלה 5
שאלה — Race/Competitor — מבנה נתונים תמיד-ממוין ל-add ו-rank ב-O(n)
- שאלה 6
שאלה — עץ מספרים — printAll על מסלולי שורש-לעלה
- שאלה 11
שאלה — מכונת טיורינג — פונקציה מקטעית על שלושה מספרים אונריים
- שאלה 12
שאלה — מכונת מחסנית עבור aⁿbᵏcⁿ, וחיתוך שפות
- שאלה 13
שאלה — היררכיית A→B→C→{D,E} — זיהוי טיפוס בלי instanceof, ומעקב בניה
- שאלה 14
שאלה — חברת 'אוזניים לעתיד' — היררכיית ניקוד עובדים, והצבעה משוקללת
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←