לחץ ▶ Run כדי להדר ולהריץ את הקובץ. אם התוכנית תבקש קלט, תוכל להקליד אותו כאן למטה.
מבוא למדעי המחשב מ'/ח' - 234114 / 234117 - מועד ב' אביב תשפ"ו
משך הבחינה שלוש שעות - אין חומר עזר - 4 שאלות, 25 נקודות לשאלה.
תרגול. אינו מבחן אמיתי של הטכניון. נבנה על ידי Claude.
---
לכל סעיף ציינו סיבוכיות זמן וסיבוכיות מקום נוסף בסימון Theta, כפונקציה של n.
הניחו כי malloc פועלת בזמן Theta(1) ותופסת מקום כגודל ההקצאה, וכי printf, free ו-sqrt הן Theta(1).
א.
void f1(int n) {
for (int i = 0; i < n; i++)
printf("*");
}
ב.
void f2(int n) {
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
printf("*");
}
ג.
int f3(int n) {
if (n <= 1)
return 1;
return f3(n / 2);
}
---
על הפונקציה לעדכן a[i] = a[i] + b[i] לכל i, ולהחזיר את מספר האינדקסים שבהם הסכום החדש חיובי ממש.
דוגמה: a = {1,-5,3}, b = {2,1,-3} -> מחזיר 1, a = {3,-4,0}
דרישות סיבוכיות: זמן Theta(n) - מקום נוסף Theta(1)
אין להקצות זיכרון דינמי ואין להשתמש בפונקציות ספרייה.
על הפונקציה לכתוב אל p את s בסדר הפוך, ולהחזיר את אורך המחרוזת.
דוגמה: s = "abcd" -> מחזיר 4, p = "dcba"
דרישות סיבוכיות: זמן Theta(n) - מקום נוסף Theta(1)
אין להקצות זיכרון דינמי ואין להשתמש בפונקציות ספרייה.
על הפונקציה להחזיר את סכום האיברים הזוגיים ב-arr.
רקורסיה בלבד, ללא לולאות, ללא פונקציית מעטפת.
דוגמה: arr = {1,2,3,4} -> 6
דרישות סיבוכיות: אין דרישת סיבוכיות
אין להקצות זיכרון דינמי ואין להשתמש במשתנים גלובליים או סטטיים.
main./grade.