לחץ ▶ 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++)
for (int j = i; j <= n; j += i)
printf("*");
}
סעיף ב
int g2(int n) {
int k = 0;
while (k < n) {
k += 3;
n--;
}
return n;
}
int f2(int n) {
if (n < 4)
return 0;
return 1+f2(g2(n));
}
סעיף ג
void f3(int n) {
if (n < 1)
return;
int* p = malloc(n*sizeof(int));
f3(n-1);
free(p);
}
כל אחד מהמערכים a,b באורך n≥1 מייצג מספר שלם לא שלילי בבסיס עשר, הספרה המשמעותית ביותר ראשונה. כל איבר הוא ספרה 0–9, ואפסים מובילים מותרים. כתבו ל-a את n הספרות האחרונות של הסכום, והחזירו את ספרת הנשא הנוספת (0 או 1). אין לשנות את b. אין להמיר את המערך למספר מטיפוס שלם יחיד.
דוגמאות — הפלט כולל את כל מה שה-main מדפיס
| קלט ל-main | פלט מלא |
|---|---|
| 13 9 9 9 9 9 9 9 9 9 9 9 9 9 0 0 0 0 0 0 0 0 0 0 0 0 1 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 |
| 10 5 7 7 7 6 4 6 5 0 9 7 0 8 4 1 3 9 2 1 2 | 1 2 8 6 1 7 8 5 7 2 1 |
| 1 7 9 | 1 6 |
כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.
נתונה s לא ריקה של אותיות a–z. יש לסדר מחדש את כל תוויה לתוך p כך שלא יהיו שני תווים סמוכים זהים. מבין כל הפתרונות יש לבחור את הקטן ביותר בסדר מילוני. אם יש פתרון, החזירו 1; אחרת החזירו 0 וכתבו מחרוזת ריקה ל-p. אין לשנות את s. יש לסיים את p ב-'\0'.
דוגמאות — הפלט כולל את כל מה שה-main מדפיס
| קלט ל-main | פלט מלא |
|---|---|
| 6 abbaca | 1 ababac |
| 7 cbacdbc | 1 abcbcdc |
| 7 abababa | 1 abababa |
| 2 aa | 0 |
כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.
נתון arr באורך 1≤n≤2000. החזירו את מספר תתי-המערכים הרציפים באורך לפחות 2 שעולים ממש. תת-מערך באורך 1 אינו נספר. אין לשנות את arr. הפונקציה עצמה וכל עזר חייבים להיות רקורסיביים; אין לולאות, פונקציית מעטפת או הקצאה דינמית. אין דרישת סיבוכיות.
דוגמאות — הפלט כולל את כל מה שה-main מדפיס
| קלט ל-main | פלט מלא |
|---|---|
| 4 1 2 3 4 | 6 |
| 4 4 3 2 1 | 0 |
| 4 1 3 2 4 | 2 |
| 1 1 | 0 |
כתבו רק את הפונקציה המבוקשת ועזר מותר בקובץ השלד. אל תשנו את main, את החתימה או את פורמט הקלט והפלט.
main./grade.