Podcast
Questions and Answers
המערך עצמו מוגדר במבנה כ- ______
המערך עצמו מוגדר במבנה כ- ______
arr
הפונקציה שתפקידה לשחרר את הזיכרון שהוקצה עבור הוקטור נקראת ______
הפונקציה שתפקידה לשחרר את הזיכרון שהוקצה עבור הוקטור נקראת ______
freeVec
בתוך מבנה Node, המשתנה הבא מייצג את המידע של האיבר: ______
בתוך מבנה Node, המשתנה הבא מייצג את המידע של האיבר: ______
data
הפונקציה המוסיפה מספר למערך היא בשם ______
הפונקציה המוסיפה מספר למערך היא בשם ______
Signup and view all the answers
במבנה Vec, המשתנה המצביע על מספר האיברים בפועל הוא ______
במבנה Vec, המשתנה המצביע על מספר האיברים בפועל הוא ______
Signup and view all the answers
מערך של מצביעים לפונקציות חייב להיות באותו ______.
מערך של מצביעים לפונקציות חייב להיות באותו ______.
Signup and view all the answers
בפונקציה main, המערך נקרא ______.
בפונקציה main, המערך נקרא ______.
Signup and view all the answers
כשהמשתמש נכנס במספר גדול מ-2, התכנית מחזירה ______.
כשהמשתמש נכנס במספר גדול מ-2, התכנית מחזירה ______.
Signup and view all the answers
ישנן פונקציות שונות כמו add, subtract, ו- ______.
ישנן פונקציות שונות כמו add, subtract, ו- ______.
Signup and view all the answers
מטרת השימוש במצביעים לפונקציות היא לכתוב קוד ______ יותר.
מטרת השימוש במצביעים לפונקציות היא לכתוב קוד ______ יותר.
Signup and view all the answers
Study Notes
מבנה Vec
- המבנה Vec מייצג ווקטור דינאמי.
- הוא מכיל שלושה שדות:
-
arr
: מצביע למערך של איברים. -
capacity
: גודל המערך שהוקצה בזיכרון (בדרך כלל גדול או שווה למספר האיברים בפועל). -
len
: מספר האיברים בפועל המאוחסנים במערך (כמה מקומות מתוךcapacity
בשימוש).
-
פונקציה addNumber
- פונקציה זו מקבלת מצביע ל-Vec ומספר חדש.
- היא מוסיפה את המספר למערך של ה-Vec.
- אם
capacity
קטן מדי ל-len
החדש, היא תגדיל את גודל ה-Vec על ידי הקצאה חדשה של זיכרון.
פונקציה freeVec
- הפונקציה מקבלת מצביע ל-Vec.
- היא משחררת את הזיכרון שהוקצה למערך של ה-Vec.
מבנה Node
- מבנה Node מייצג צומת ברשימה מקושרת.
- הוא מכיל שני שדות:
-
data
: הערך המאוחסן בצומת. -
next
: מצביע לצומת הבא ברשימה.
-
פונקציה למחיקת איברים אי זוגיים
- הפונקציה מקבלת מצביע לראש הרשימה המקושרת.
- היא עוברת על הרשימה ומתייחסת לכל צומת.
- אם הערך
data
בצומת הוא אי זוגי, היא מוחקת את הצומת מהרשימה. - הפונקציה צריכה לטפל במקרים של
head
ריק, צומת יחיד או צומת ראשון אי זוגי.
מצביעים לפונקציות
- ניתן להגדיר מערך של מצביעים לפונקציות.
- כל הפונקציות במערך חייבות להיות מאותו טיפוס.
- ניתן ליישם את המערך במבנה:
void (*fun_ptr_arr[])(double, char) = { f1, f2, f3 }
.
שימוש במצביעים לפונקציות
- שימוש במצביעים לפונקציות מאפשר כתיבת קוד כללי יותר.
- מאפשר הרחבה של התכנית, בלי צורך בשינוי קוד קיים.
- ניתן להשתמש במצביעים לפונקציות כדי לכתוב פונקציה המדפיסה מערך בדרכים שונות.
דוגמה – הדפסת מערך
- ניתן להגדיר פורמטים שונים של הדפסה:
printSpace(int num)
,printNewLine(int num)
,printHyphen(int num)
. - ניתן לכתוב פונקציה המדפיסה מערך לפי פורמט:
void printArray(int* array, int size, void (*PrintFormat)(int))
. - ניתן לזמן את הדפסת המערך באופן שנבחר, באמצעות
printArray(myArray, SIZE, printSpace)
.
תרגיל - מיון מערך
- ניתן לכתוב פונקציה הממיינת מערך של סטודנטים בדרכים שונות: על פי שם הסטודנט, על פי ממוצע הציונים, על פי מספר סידורי.
- ניתן להגדיר מצביע לפונקציה שתדע להשוות תכונה ספציפית.
- הפונקציה
bubbleSort(student* arr, int n, int (*compFunc)(student, student))
ממיינת מערך של סטודנטים באמצעות פונקציית השוואה ספציפית. - ניתן להשתמש בפונקציות עזר כמו
compareByName(student a, student b)
,compareById(student a, student b)
,compareByGrade(student a, student b)
למיון לפי תכונה ספציפית. - ניתן לכתוב תכנית הממיינת את המערך בדרכים שונות,לדוגמה,
bubbleSort(arr, SIZE, compareByName)
ממיינת את המערך על פי שם.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
החידון כולל שאלות על מבנים בפייתון כמו Vec ו-Node וכיצד לפעול עם פונקציות המוסיפות או מוחקות איברים. בנוסף, נבחן את ניהול הזיכרון הקשור לפונקציות שונות. החידון מיועד לסטודנטים בתכנות בשפת C.