סיכום: מערך דינמי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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: 3
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 אונליין