מבוא למדעי המחשב מ'/ח' — 234114 הקשה ביותר · Codex · Moed Bet · Spring 2026 · practice
3:00:00
gcc 13.2 · -std=c99 0/80
1
לחץ ▶ Run כדי להדר ולהריץ את הקובץ. אם התוכנית תבקש קלט, תוכל להקליד אותו כאן למטה.
גודל טקסט

מבוא למדעי המחשב מ'/ח'

234114 / 234117  ·  מועד ב׳  ·  סמסטר אביב תשפ"ו
משך הבחינה: שלוש שעותחומר עזר: אין4 שאלות · 25 נקודות לשאלה
תרגול מדומה לקראת מועד ב׳ אביב 2026, נבנה על שלד הבחינה האמיתי. נכתב על ידי Codex. אינו מבחן אמיתי של הטכניון.

מבוא למדעי המחשב מ׳/ח׳ 234114/234117 · אביב 2026 מועד ב׳ — תרגול, לא המבחן האמיתי.

משך: 3 שעות. ללא חומר עזר. 4 שאלות × 25 נקודות. אין שימוש ב-struct או ב-backtracking. שלושת קובצי השלד המקוריים מצורפים ללא שינוי.

שאלה 1 — סיבוכיות (25 נקודות)

לכל קטע יש לקבוע סיבוכיות זמן ומקום נוסף הדוקה Θ. כל סעיף שווה שליש מניקוד השאלה. יש להניח n חיובי, פעולות ו-printf/free/malloc בזמן קבוע, הקצאה של k איברים תופסת Θ(k) מקום, והקצאות מצליחות. יש לכלול את מחסנית הרקורסיה; אין להניח אופטימיזציית זנב. מנתחים את הקוד במודל הרגיל ללא גלישת מספרים וללא אופטימיזציות מהדר.

סעיף א

void f1(int n) {
    for (int i = 1; i <= n; i *= 2)
        for (int j = 0; j < n; j += i)
            for (int k = 0; k < i; k++)
                printf("*");
}
דרישות סיבוכיותזמן: ________ · מקום: ________

סעיף ב

int f2(int n) {
    if (n < 2)
        return 1;
    int* p = malloc(n*n*sizeof(int));
    int x = f2(n/2);
    int y = f2(n/2);
    free(p);
    return x+y;
}
דרישות סיבוכיותזמן: ________ · מקום: ________

סעיף ג

int g3(int n) {
    if (n < 2)
        return 1;
    return 2*g3(n/2);
}
void f3(int n) {
    for (int i = 0; i < g3(n); i++)
        printf("*");
}
דרישות סיבוכיותזמן: ________ · מקום: ________

שאלה 2 — 25 נקודות

int examB_q2(int* a, int* b, int n);

נתונים שני מערכים a,b באורך n≥1. כל איברי b שונים והוא התקבל מסיבוב מעגלי של מערך ממוין בסדר עולה ממש. לכל איבר מקורי a[i], יש לכתוב במקומו את הערך ב-b שמרחקו ממנו מינימלי; בשוויון בחרו בערך הקטן יותר. החזירו את מספר האיברים המקוריים של a שהופיעו ב-b. אין לשנות את b. כל ערכי הקלט בין ‎−1000 ל-1000. כל n התאים של a הם חלק מהתוצאה.

דרישות סיבוכיותדרישת זמן / מקום נוסף: O(n log(n+1)) / O(1)

דוגמאות — הפלט כולל את כל מה שה-main מדפיס

קלט ל-mainפלט מלא
13
-9 -6 -1 0 2 5 13 18 19 24 26 35 -14
-9 -6 -1 0 2 5 13 18 19 24 26 35 -14
13
-9 -6 -1 0 2 5 13 18 19 24 26 35 -14
12
36 22 26 4 -25 -39 -37 -39 -13 27 -20 -7
-19 -8 -6 -3 11 14 15 20 21 29 -35 -22
0
29 21 29 -3 -22 -35 -35 -35 -8 29 -19 -8
2
-18 13
14 -18
1
-18 14
1
18
10
0
10

כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.

שאלה 3 — 25 נקודות

int examB_q3(char* s, char* p);

נתונה מחרוזת s לא ריקה של אותיות a–z. כתבו ל-p את תת-הסדרה המינימלית בסדר מילוני שמכילה כל אות שונה של s פעם אחת בדיוק. תת-סדרה שומרת על סדר ההופעה, אך רשאית לדלג על תווים. החזירו את אורך p. אין לשנות את s. יש לסיים את p ב-'\0'.

דרישות סיבוכיותדרישת זמן / מקום נוסף: O(n) / O(1), alphabet size 26; p is output

דוגמאות — הפלט כולל את כל מה שה-main מדפיס

קלט ל-mainפלט מלא
6
abbaca
3
abc
8
cbacdcbc
4
acdb
7
abababa
2
ab
2
aa
1
a

כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.

שאלה 4 — 25 נקודות

int examB_q4(int* arr, int n);

נתון arr באורך 1≤n≤2000. החזירו את מספר הזוגות i<j שעבורם arr[i]>arr[j]. מותר לשנות את arr. כל איבר בין ‎−1000 ל-1000. הפונקציה עצמה וכל פונקציות העזר חייבות להיות רקורסיביות; אין לולאות, פונקציית מעטפת או הקצאה דינמית. אין דרישת סיבוכיות בשאלה זו. שוויון אינו נחשב היפוך.

דרישות סיבוכיותדרישת זמן / מקום נוסף: No required bound; supplied solution O(n²) time / O(n) stack

דוגמאות — הפלט כולל את כל מה שה-main מדפיס

קלט ל-mainפלט מלא
4
1 2 3 4
0
4
4 3 2 1
6
4
1 3 2 4
1
1
1
0

כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.

איך עובדים כאן

  • כתבו בעורך שמשמאל. שלושה קבצים, לשונית לכל שאלה. אל תשנו את main.
  • הרץ בדיקות מריץ את התוכנית שלכם על הקלט של כל מקרה ומשווה את כל הפלט — הערך המוחזר וגם המערך או המחרוזת שנדפסים אחריו.
  • סיבוכיות אינה נבדקת אוטומטית. פתרון שעובר את כל הבדיקות בסיבוכיות שגויה — נכשל בשאלה.
  • בסיום לחצו סיום והגשה, שמרו את קובץ ההגשה, ובקשו מ-Claude ציון עם /grade.