מה"ט אלגוריתמיקה ותכנות — אביב 2025 מועד א'
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
למגמת הנדסת תוכנה — מי שלומד ב-Java או ב-C#. הלומדים בפייתון ניגשים לשאלון נפרד.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 28 שאלות המבחן — את כולן תוכלו לפתור אונליין.
נתונות פעולות רקורסיביות mystery ו-secret:
public static int mystery(String s1, String s2)
{
if (s1.length() == 0 && s2.length() == 0) return 0;
if (s1.length() == 0) return -1;
if (s2.length() == 0) return 1;
if (s1.charAt(0) < s2.charAt(0)) return -1;
if (s1.charAt(0) > s2.charAt(0)) return 1;
return mystery(s1.substring(1), s2.substring(1));
}
public static String[] secret(String[] arr, String s)
{
String[] temp = new String[arr.length];
secretHelp(arr, temp, s, 0, 0, temp.length - 1);
return temp;
}
private static void secretHelp(String[] arr, String[] temp, String s, int i, int left, int right)
{
if (i < arr.length)
{
if (mystery(arr[i], s) < 0)
{
temp[left] = arr[i];
secretHelp(arr, temp, s, i + 1, left + 1, right);
}
else
{
temp[right] = arr[i];
secretHelp(arr, temp, s, i + 1, left, right - 1);
}
}
}
עקבו אחרי זימון mystery("HELLO","HELP") ורשמו את תוצאת הזימון. יש להראות מעקב!
מה מבצעת הפעולה mystery(s1, s2) עבור שתי מחרוזות s1,s2?
נתון מערך מחרוזות:
String[] arr = {"HELLO", "WORLD", "GOOD", "DAY","FOR","TEST"}
עקבו אחרי הזימון secret(arr, "JAVA") ורשמו את תוצאות הזימון.
יש להראות מעקב אחרי הפעולה secret, אין צורך במעקב אחרי הפעולה mystery.
מה מבצעת הפעולה secret(arr, s) עבור מערך מחרוזות arr ומחרוזת s?
נתונות ההגדרות: מערך דו-ממדי של מספרים שלמים נקרא "מערך מסודר" אם הוא עונה על שלושת התנאים האלה:
- מספר השורות במערך שווה למספר העמודות (מערך ריבועי).
- כל האיברים במערך הם מספרים חיוביים.
- כל איבר בעמודה 0 כולל את הספרה 0, כל איבר בעמודה 1 כולל את הספרה 1 וכן הלאה. לדוגמה, המערך שלפניכם הוא "מערך מסודר":
| שורה\עמודה | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 0 | 10 | 312 | 1220 | 31 |
| 1 | 605 | 1 | 1342 | 13 |
| 2 | 70 | 15 | 21 | 305 |
| 3 | 1003 | 601 | 200 | 203 |
כתבו פעולה המקבלת מערך דו-ממדי של מספרים שלמים ובודקת אם הוא "מערך מסודר". אם כן – הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.
מהי הסיבוכיות של הפעולה שכתבתם בסעיף א'? הסבירו את תשובתכם. רמז: מומלץ לכתוב פעולות עזר!
מערך של מספרים שלמים חיוביים נקרא "מערך יפה" אם הוא באורך אי-זוגי ועונה על התנאי: הסכום של כל המספרים מתחילת המערך עד האיבר המרכזי שווה לסכום של כל האיברים שאחרי האיבר המרכזי ושווה לאיבר המרכזי. לדוגמה, המערך הזה הוא "מערך יפה":
| אינדקס | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| ערך | 5 | 3 | 4 | 1 | 13 | 3 | 1 | 2 | 7 |
כי 13=3+1+2+7=5+3+4+1
כתבו פעולה המקבלת מערך של מספרים שלמים חיוביים arr. אם המערך יפה – הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.
כותרת הפעולה:
public static boolean isNice(int[] arr)
כתבו פעולה המקבלת מספר שלם אי-זוגי size. הפעולה תיצור מערך של מספרים שלמים בגודל size (אפשר להניח ש-size>4) ותמלא אותו במספרים אקראיים תלת-ספרתיים חיוביים כך שיתקבל "מערך יפה".
כותרת הפעולה:
public static int[] doItNice(int size)
הנושאים הרשמיים בבחינה 97104
לפי תוכנית הלימודים הרשמית של מה"ט (אלגוריתמיקה ותכנות) — אלו הנושאים שהבחינה נשענת עליהם:
- אלגוריתם – אלגוריתמים מילוליים, שימוש באלגוריתם לפתרון בעיות במחשב · 11 ש'
- מבוא לתכנות ב-Java – מבנה תכנית, משתנים, טיפוסי נתונים בסיסיים, הוראות השמה ופלט · 11 ש'
- מתחילים לתכנת – אופרטורים, ממשק מחלקה, זימון פעולות, המחלקה Math · 16 ש'
- משפטי תנאי (if, switch) ופעולות (methods) – כתיבה וזימון, יבוא מודולים · 23 ש'
- לולאות (for, while, do-while) – יעילות אלגוריתם, תבניות אלגוריתמיות בסיסיות, המחלקה String · 28 ש'
- מבנה נתונים סדרתיים – מערכים חד-ממדיים ודו-ממדיים, תבניות סריקה, חיפוש ומיון (insertion sort, מיזוג) · 36 ש'
- מבוא לתכנות מונחה עצמים – מחלקות ועצמים, הכמסה (Encapsulation), בנאים, העמסה ודריסה (overloading/overriding) · 22 ש'
- רקורסיה · 7 ש'
- טיפול בחריגים (Exceptions) – היכרות עם מחלקת Exception ופרדיגמת exceptions · 7 ש'
- ערוצי קלט/פלט (System.in/out/err), קריאה וכתיבה לקובצי טקסט ובינארי · 7 ש'
- יסודות Threads ו-MultiThreads · 6 ש'
- כתיבה תקנית (coding conventions) בסביבת Java · 8 ש'
- ניהול זיכרון והמכונה הוירטואלית (JVM) בג'אווה · 5 ש'
- תרגיל סיכום מסכם · 2 ש'
המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←