Menu
CoddyTech

סיכום: מערך דינמי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 37 מתוך 63.

challenge icon

אתגר

קל

כתבו תוכנית ב-C שיוצרת מערך דינמי על סמך קלט מהמשתמש, מעבדת את הנתונים ומדגימה ניהול תקין של זיכרון. התוכנית שלכם צריכה:

  1. לקרוא מהמשתמש מספר שלם n שמייצג את מספר האיברים שיש לאחסן
  2. להשתמש ב-malloc() עם sizeof() כדי להקצות באופן דינמי זיכרון למערך של n מספרים שלמים
  3. לבדוק אם הקצאת הזיכרון הצליחה - אם היא נכשלת, להדפיס Memory allocation failed! ולסיים את התוכנית
  4. אם ההקצאה מצליחה, להדפיס Array of size [n] created successfully!
  5. לקרוא מהמשתמש n ערכים של מספרים שלמים ולאחסן אותם במערך שהוקצה
  6. לחשב ולהדפיס את סכום כל האיברים בפורמט: Sum: [value]
  7. למצוא ולהדפיס את הערך המינימלי בפורמט: Minimum: [value]
  8. לספור כמה איברים גדולים מהממוצע ולהדפיס בפורמט: Elements above average: [count]
  9. להדפיס את סך הזיכרון שנעשה בו שימוש, בבתים, בפורמט: Memory used: [bytes] bytes
  10. להשתמש ב-free() כדי לשחרר את הזיכרון
  11. להדפיס 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;
}

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C אונליין