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