סיכום: מערך דינמי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 37 מתוך 63.
אתגר
קלכתבו תוכנית ב־C שיוצרת מערך דינמי על סמך קלט מהמשתמש, מעבדת את הנתונים ומדגימה ניהול זיכרון תקין. התוכנית שלכם צריכה:
- לקרוא מהמשתמש מספר שלם
nשמייצג את מספר האיברים לאחסון - להשתמש ב־
malloc()עםsizeof()כדי להקצות באופן דינמי זיכרון למערך שלnמספרים שלמים - לבדוק אם הקצאת הזיכרון הצליחה — אם היא נכשלה, להדפיס
Memory allocation failed!ולסיים את התוכנית - אם ההקצאה הצליחה, להדפיס
Array of size [n] created successfully! - לקרוא מהמשתמש
nערכים של מספרים שלמים ולאחסן אותם במערך שהוקצה - לחשב ולהדפיס את סכום כל האיברים בפורמט:
Sum: [value] - למצוא ולהדפיס את הערך המינימלי בפורמט:
Minimum: [value] - לספור כמה איברים גדולים מהממוצע ולהדפיס בפורמט:
Elements above average: [count] - להדפיס את סך הזיכרון שבו נעשה שימוש, בבתים, בפורמט:
Memory used: [bytes] bytes - להשתמש ב־
free()כדי לשחרר את הזיכרון - להדפיס
Memory successfully freed!כדי לאשר שהניקוי בוצע כראוי
זכרו לכלול את הכותרת <stdlib.h> כדי להשתמש ב־malloc() וב־free(). האתגר הזה בודק את ההבנה המלאה שלכם בניהול זיכרון דינמי, מההקצאה ועד לשימוש ולשחרור תקין.
לדוגמה, אם הקלט הוא:
5
12 8 15 3 20הפלט שלכם צריך להיות:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!האתגר המקיף הזה מדגים את מחזור החיים המלא של ניהול זיכרון דינמי, תוך ביצוע פעולות עיבוד נתונים משמעותיות על המערך שהוקצה.
נסו בעצמכם
#include <stdio.h>
#include <stdlib.h>
int main() {
// קראו את מספר האיברים
int n;
scanf("%d", &n);
// TODO: כתבו את הקוד שלכם למטה
// 1. הקצו זיכרון עבור n מספרים שלמים באמצעות malloc()
// 2. בדקו אם הקצאת הזיכרון הצליחה
// 3. קראו n מספרים שלמים לתוך המערך
// 4. חשבו את הסכום, מצאו את הערך המינימלי וספרו את האיברים שמעל לממוצע
// 5. הדפיסו את התוצאות ושחררו את הזיכרון
return 0;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין