בגרות מדעי המחשב 899371, קיץ 2022 מועד א'
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
לתלמידי ותלמידות מדעי המחשב ביחידות המתקדמות — מי שלומד ב-Java או ב-C#. השאלון אחד; השפה היא הבחירה שלכם.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 3 שאלות המבחן — את כולן תוכלו לפתור אונליין.
כתבו פעולה חיצונית ששמה multiply בשפת Java או Multiply ב-C#, המקבלת שני מערכים מטיפוס שלם, arr1 ו-arr2, ששונים בגודלם. נקרא לגודל המערך הקטן יותר k ולגודל המערך הגדול יותר m. על הפעולה להחזיר מערך חדש מטיפוס שלם בגודל m, לפי הפירוט הבא: ערכו של כל אחד מ-k התאים הראשונים במערך המוחזר יהיה שווה למכפלת הערכים של התאים המקבילים לו במערכים arr1 ו-arr2. שאר התאים במערך המוחזר יהיו זהים לערכי התאים המקבילים להם במערך הגדול. הניחו שאין תאים ריקים בשני המערכים, ושערכי המערכים תקינים.
דוגמה: בעבור arr1 = [1, -4, 4, 9, 2] (k=5) ו-arr2 = [9, 2, 0, -1, 3, 11, 23] (m=7), הפעולה תחזיר [9, -8, 0, -9, 6, 11, 23].
כתבו פעולה חיצונית ששמה multiply בשפת Java או Multiply ב-C#, המקבלת שני מערכים מטיפוס שלם arr1 ו-arr2 (ששונים בגודלם), ומחזירה מערך חדש מטיפוס שלם בגודל m (גודל המערך הגדול). ב-k התאים הראשונים (k = גודל המערך הקטן) יש למקם את מכפלת האיברים המקבילים משני המערכים; בשאר התאים יש להעתיק את ערכי המערך הגדול.
public static int[] multiply(int[] arr1, int[] arr2)
"סריקה לפי ערכי התאים" היא סריקה שמתחילה באינדקס 0, ועוברת מאינדקס לאינדקס אחר שמספרו שווה לערך השמור באותו אינדקס, וממשיכה כך הלאה. אם הסריקה מגיעה לתא שערכו 0, היא מסתיימת. הניחו שערכי התאים אינם חורגים מגבולות המערך.
מערך מושלם לפי "סריקה לפי ערכי התאים" הוא מערך שבו: (1) כל התאים של המערך נסרקים; וגם (2) הסריקה מסתיימת (מפני שבמערך יש תא שערכו 0 והסריקה מגיעה אליו).
דוגמאות: arr=[2,2,3,2,0] — סדר האינדקסים בסריקה הוא 0,2,3,2,3,... (אינו מסתיים, לא מגיע לתא ערך 0). arr=[3,0,1,4,2] — סדר האינדקסים 0,3,4,2,1 — כל 5 התאים נסרקים והסריקה מסתיימת בתא ערך 0 — מערך מושלם. arr=[1,2,5,1,3,4] — הסריקה חוזרת על תאים בלי להגיע לתא ערך 0 — אינו מושלם, כי הסריקה אינה מסתיימת. arr=[3,4,1,5,6,0,2] — הסריקה מסתיימת (0 באינדקס 5) אך רק לאחר סריקת 3 תאים בלבד — אינו מושלם, כי לא כל התאים נסרקו.
ממשו את הפעולה isPerfect/IsPerfect. הפעולה תקבל מערך שלמים arr ותחזיר true אם הוא "מערך מושלם" לפי "סריקה לפי ערכי התאים" (כל התאים נסרקים והסריקה מסתיימת בתא שערכו 0), אחרת false. הניחו שערכי התאים אינם חורגים מגבולות המערך.
public static boolean isPerfect(int[] arr)
פיקסל (Pixel) הוא יחידת מידע המתארת נקודה בתמונה דיגיטלית. כל פיקסל מורכב משילוב שלושה צבעים: אדום, ירוק וכחול, וכל אחד מהם מקבל ערך שלם מ-0 עד 255 (כולל), המייצג את עוצמת הצבע. לקבלת נקודה בצבע אדום (בין בהיר לכהה): אדום מ-1 עד 255, ירוק=0, כחול=0. לקבלת נקודה בצבע ירוק: ירוק מ-1 עד 255, אדום=0, כחול=0. לקבלת נקודה בצבע כחול: כחול מ-1 עד 255, אדום=0, ירוק=0. שחור: שלושתם 0. לבן: שלושתם 255.
נתונה המחלקה Pixel, ולה שלוש תכונות: red, green, blue (כל אחת מספר שלם 0 עד 255). קיימות עבורן פעולות get/set. הממשק החלקי הנתון של Pixel: פעולה בונה public Pixel(int red, int green, int blue); ובנוסף isRed/IsRed, isGreen/IsGreen, isBlue/IsBlue — כל אחת מחזירה true אם הנקודה בצבע המתאים, אחרת false.
נתונה גם המחלקה Structure, ולה תכונה אחת בלבד: arr — מערך חד-ממדי מטיפוס Pixel בגודל N.
// ממשק חלקי נתון (Pixel):
public class Pixel {
// תכונות (נתון): red, green, blue — כל אחת מספר שלם בין 0 ל-255
public Pixel(int red, int green, int blue) { ... } // נתון
public boolean isRed() { ... } // סעיף א — יש לממש
public boolean isGreen() { ... } // מותר להשתמש בלי לממש
public boolean isBlue() { ... } // מותר להשתמש בלי לממש
// get/set לכל תכונה — נתון שקיימות
}
// המחלקה Structure — תכונה יחידה:
public class Structure {
private Pixel[] arr; // מערך חד-ממדי מטיפוס Pixel, בגודל N
// סעיף ב(1) — isBalanced: יש לממש
// סעיף ב(2) — isBlackWhite: יש לממש
}
ממשו את הפעולה isRed/IsRed במחלקה Pixel. הניחו שערכי התכונות תקינים (מ-0 עד 255).
public boolean isRed()
כתבו פעולה פנימית במחלקה Structure ששמה isBalanced (Java) או IsBalanced (C#). הפעולה תחזיר true אם במערך arr מספר הנקודות בצבע אדום זהה למספר הנקודות בצבע ירוק וזהה גם למספר הנקודות בצבע כחול; אחרת תחזיר false. שימו לב: גם אם יש במערך נקודות שאינן בצבע אדום/ירוק/כחול טהור, כל עוד מספרי הנקודות האדומות, הירוקות והכחולות זהים ביניהן — המערך מאוזן. בסעיף זה מותר להשתמש בפעולות isRed/isGreen ו-isBlue בלי לממש אותן מחדש.
public boolean isBalanced()
מערך "שחור לבן" הוא מערך arr שבו כל הנקודות הן רק בצבעים שחור ולבן, ויש בו לפחות נקודה אחת בצבע לבן ולפחות נקודה אחת בצבע שחור. כתבו פעולה פנימית במחלקה Structure ששמה isBlackWhite (Java) או IsBlackWhite (C#). הפעולה תחזיר true אם המערך arr הוא מערך "שחור לבן" כהגדרתו, אחרת תחזיר false.
public boolean isBlackWhite()
כל שאלות המבחן — 3 שאלות, כל אחת עם פתרון מלא
לפי סדר המבחן. לוחצים על שאלה ועוברים לעמוד שלה: השאלה המלאה, השרטוט, ופתרון מלא ומוסבר צעד אחרי צעד.
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←