לחץ ▶ Run כדי להדר ולהריץ את הקובץ. אם התוכנית תבקש קלט, תוכל להקליד אותו כאן למטה.
מבוא למדעי המחשב מ׳/ח׳ 234114/234117 · אביב 2026 מועד ב׳ — תרגול, לא המבחן האמיתי.
משך: 3 שעות. ללא חומר עזר. 4 שאלות × 25 נקודות. אין שימוש ב-struct או ב-backtracking. שלושת קובצי השלד המקוריים מצורפים ללא שינוי.
לכל קטע יש לקבוע סיבוכיות זמן ומקום נוסף הדוקה Θ. כל סעיף שווה שליש מניקוד השאלה. יש להניח n חיובי, פעולות ו-printf/free/malloc בזמן קבוע, הקצאה של k איברים תופסת Θ(k) מקום, והקצאות מצליחות. יש לכלול את מחסנית הרקורסיה; אין להניח אופטימיזציית זנב. מנתחים את הקוד במודל הרגיל ללא גלישת מספרים וללא אופטימיזציות מהדר.
סעיף א
void f1(int n) {
for (int i = 2; i*i <= n; i++)
for (int j = 1; j <= n; j *= 2)
printf("*");
}
סעיף ב
void f2(int n) {
if (n < 2)
return;
for (int i = 0; i < n; i++)
printf("*");
f2(n/2);
f2(n/2);
}
סעיף ג
void f3(int n) {
for (int i = 1; i <= n; i *= 2) {
int* p = malloc(i*sizeof(int));
for (int j = 0; j < i; j++)
p[j] = j;
free(p);
}
}
נתונים a,b באורך n≥1, ממוינים בסדר לא יורד, עם ערכים שלמים חיוביים. לכל ערך, הסירו מ-a מספר הופעות השווה למינימום בין מספר הופעותיו ב-a וב-b. כתבו את ההופעות שנותרו בתחילת a בסדר עולה, מלאו את כל יתר התאים באפס והחזירו את מספר ההופעות שנותרו. אין לשנות את b.
דוגמאות — הפלט כולל את כל מה שה-main מדפיס
| קלט ל-main | פלט מלא |
|---|---|
| 11 1 1 1 2 4 4 4 4 6 6 7 1 1 1 2 4 4 4 4 6 6 7 | 0 0 0 0 0 0 0 0 0 0 0 0 |
| 9 1 1 1 1 1 1 1 1 1 9 9 9 9 9 9 9 9 9 | 9 1 1 1 1 1 1 1 1 1 |
| 5 2 4 5 7 7 1 1 3 4 6 | 4 2 5 7 7 0 |
| 1 5 5 | 0 0 |
כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.
נתונה s לא ריקה של אותיות a–z. כתבו ל-p את תת-המחרוזת הרציפה הארוכה ביותר שאין בה אות שמופיעה פעמיים. בשוויון בחרו בזו שמתחילה מוקדם יותר ב-s. החזירו את אורכה. אין לשנות את s, ויש לסיים את p ב-'\0'.
דוגמאות — הפלט כולל את כל מה שה-main מדפיס
| קלט ל-main | פלט מלא |
|---|---|
| 6 abbaca | 3 bac |
| 8 cbacdcbc | 4 bacd |
| 7 abababa | 2 ab |
| 2 aa | 1 a |
כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.
נתון arr באורך n≥1. מיקום i נקרא שיא קידומת אם arr[i] גדול ממש מכל איבר שקדם לו. מיקום 0 תמיד נחשב שיא. החזירו את מספר שיאי הקידומת. אין לשנות את arr. הפונקציה עצמה וכל עזר חייבים להיות רקורסיביים; אין לולאות, פונקציית מעטפת או הקצאה דינמית. אין דרישת סיבוכיות.
דוגמאות — הפלט כולל את כל מה שה-main מדפיס
| קלט ל-main | פלט מלא |
|---|---|
| 4 1 2 3 4 | 4 |
| 4 4 3 2 1 | 1 |
| 4 1 3 2 4 | 3 |
| 1 1 | 1 |
כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.
main./grade.