תכנות, רקורסיה, מערכים, מחרוזות, עצים בינאריים ורשימות מקושרות
IntegerBinaryTree, IntegerBinaryNode, המחלקות את המרחיבות BinaryTree<Integer>, BinaryNode<Integer> בהתאמה.IntegerBinaryTree את השיטה הבוליאנית pathSum(int sum) אשר מקבלת מספר שלם sum ומחזירה ערך true אם קיים מסלול כלשהו בעץ מהשורש לעלה אשר סכום המספרים בקודקודי המסלול הוא בדיוק sum. אם לא קיים מסלול כזה השיטה מחזירה ערך false (5 נקודות).IntegerBinaryNode (10 נקודות). 5
/ \
1 7
/ / \
6 2 9
/
4
array1 = {1, 3, 6, 7, 8, 10}array2 = {8, 10, 1, 3, 6, 7}array3 = {3, 6, 7, 8, 10, 1}findMinIndex(int[] array) המקבלת מערך לא ריק וממויין בעל איברים יחודיים שעבר הזזה מעגלית ומחזירה את האינדקס של האיבר הקטן ביותר במערך.array1 הפונקציה תחזיר את הערך 0.array2 הפונקציה תחזיר את הערך 2.array3 הפונקציה תחזיר את הערך 5.| לפני הקריאה לפונקציה | אחרי הקריאה לפונקציה | ערך החזרה | הסבר |
|---|---|---|---|
| 2 | הפרמוטציה הקטנה ביותר היא והיא שונה מהמחרוזת המקורית ב-2 מקומות (יש להחליף את התו d בתו a ואת התו a בתו d). הפרמוטציה הגדולה ביותר היא והיא שונה מהמחרוזת המקורית ב-4 מקומות (התו היחיד שנשאר במקום ולא מוחלף זה התו c) | ||
| 3 | הפרמוטציה הקטנה ביותר היא והיא שונה מהמחרוזת המקורית ב-4 מקומות (התו היחיד שנשאר במקום ולא מוחלף זה התו z). הפרמוטציה הגדולה ביותר היא והיא שונה מהמחרוזת המקורית ב-3 מקומות. | ||
| 0 | אין צורך לשנות את המחרוזת כיוון שהיא הפרמוטציה הקטנה ביותר והיא דורשת 0 שינויים. |
| התו | סידור המערך |
|---|---|
| המערך ממוין בסדר עולה | |
| המערך ממוין בסדר יורד |
compare. אסור להגדיר פונקציות עזר נוספות.| תוכן המערך | ערך החזרה | ||
|---|---|---|---|
| 1, 2, 3, 4, 5 | 3 | 2 | |
| 10, 5, 2, -1, -3 | 7 | -1 | |
| 12, 0, -2 | 0 | 1 |
compare: .f1 המוגדרת בקטע הקוד הבא, כפונקציה של . אין צורך לפרט את שיקוליכם. חובה לפשט את הביטוי ככל שניתן.f2 המוגדרת בקטע הקוד הבא, כפונקציה של . אין צורך לפרט את שיקוליכם. חובה לפשט את הביטוי ככל שניתן.c1_finalB.q יש תוכנית שבה קולטים שמות סטודנטים מהמשתמש ושומרים אותם במטריצה names.names. מובטח כי השם הארוך ביותר לא יהיה יותר מ תוים.main אשר קוראת לפונקציה read_names, מדפיסה את השמות, וקוראת לפונקציה free_names.main אין טעויות ואסור לשנות אותו.NULL לפני שתשתמש בו.| המחרוזת | המחרוזת | מחרוזת התוצאה |
|---|---|---|
| "1" | "1" | "2" |
| "998" | "2" | "1000" |
| "5" | "0" | "5" |
| "123456789012" | "1" | "123456789013" |
q1_finalA.c תוכנית שבה משתמשים ב-2 מערכים: מערך ids של ת.ז. ומערך grades של ציונים. 2 המערכים באותו אורך, כאשר grades[i] הוא הציון הממוצע של הסטודנט שת.ז. שלו היא ids[i].'\0'), והציון הוא מספר ממשי.main אשר קוראת לפונקציה read_arrays, מדפיסה את הערכים (הציונים מודפסים בדיוק של 2 ספרות לאחר הנקודה), וקוראת לפונקציה free_arrays.NULL לפני שתשתמש בו.exam_q4 היצקנופה תרחא דבלמ - main.| קלט | פלט | הסבר |
|---|---|---|
arr = [-70, -20, 50 100], x=30 | 2 | קיימות שתי תוגוז בעלות המערך שמבינים את הסכום 30: , |
arr = [10, 10, -10, -10, 30], x=0 | 4 | קיימות ארבע תוגוז בעלות המערך שמבינים את הסכום 0: arr[0] + arr[2] = 10 + (-10) = 0, arr[0] + arr[3] = 10 + (-10) = 0, arr[1] + arr[2] = 10 + (-10) = 0, arr[1] + arr[3] = 10 + (-10) = 0 |
f1, המוגדרת בקטע הקוד הבא, כפונקציה של . אין צורך להסביר את השיקוליכם. חובה להרחיב את הביטוי ככל שניתן. ניתן להניח כי printf היא .f2, המוגדרת בקטע הקוד הבא, כפונקציה של . אין צורך להסביר את השיקוליכם. חובה להרחיב את הביטוי ככל שניתן. ניתן להניח כי malloc ו-free היא .f3, המוגדרת בקטע הקוד הבא, כפונקציה של . אין צורך להסביר את השיקוליכם. חובה להרחיב את הביטוי ככל שניתן. ניתן להניח כי .שאלות תרגול במבוא למדעי המחשב בנושא סיבוכיות מקום ממבחנים של האוניברסיטה הפתוחה, אוניברסיטת תל אביב, אוניברסיטת בר-אילן, הטכניון. השאלות ממוינות לפי רמת קושי, עם פתרונות לבדיקה עצמית - כך שניתן ללמוד מטעויות ולהבין את דרך הפתרון לפני הבחינה. ניתן לאתר שאלות חוזרות ולהריץ מבחני סימולציה ממוקדים בנושא סיבוכיות מקום.