Menu
Coddy logo textTech

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

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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: 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;
}

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

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