Menu
Coddy logo textTech

מצביע ומערך דינמי

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

challenge icon

אתגר

קל

צרו תוכנית שמדגימה ניהול זיכרון דינמי באמצעות בניית מערכת גמישה לאחסון ולעיבוד מספרים. האתגר הזה יבחן את ההבנה שלכם במערכים דינמיים, בהקצאת זיכרון, במניפולציה של מערכים ובשחרור נכון של זיכרון.

הקלטים הבאים יסופקו:

  • מספר שלם size שמייצג את מספר המספרים השלמים לאחסון
  • לאחר מכן size מספרים שלמים שמייצגים את המספרים שיש לאחסן במערך הדינמי

התוכנית שלכם צריכה:

  1. לקרוא את הגודל מהקלט
  2. להקצות באופן דינמי מערך של מספרים שלמים באמצעות new[] בגודל שצוין
  3. לקרוא את המספרים השלמים מהקלט ולאחסן אותם במערך שהוקצה באופן דינמי
  4. לחשב את סכום כל המספרים במערך
  5. למצוא את הערך המרבי במערך
  6. להדפיס את התוצאות בפורמט שצוין
  7. לשחרר כראוי את הזיכרון באמצעות delete[]

השתמשו בפורמט הפלט המדויק הבא:

Array size: [size]
Sum: [sum_of_all_numbers]
Maximum: [maximum_value]

זכרו שהקצאת זיכרון דינמית מאפשרת לכם ליצור מערכים שגודלם נקבע בזמן הריצה על סמך קלט המשתמש. השתמשו ב־new int[size] כדי להקצות את המערך, וגשו לאיברים באמצעות סימון מערך array[index]. לאחר שתסיימו להשתמש במערך, עליכם לקרוא ל־delete[] array כדי לשחרר את הזיכרון שהוקצה ולמנוע דליפות זיכרון. המערך נמצא בערימה ויישאר קיים עד שתשחררו אותו במפורש.

נסו בעצמכם

#include <iostream>
using namespace std;

int main() {
    // קראו את גודל המערך
    int size;
    cin >> size;
    
    // TODO: כתבו את הקוד שלכם כאן
    // 1. הקצו מערך באופן דינמי באמצעות new[]
    // 2. קראו את המספרים השלמים ואחסנו אותם במערך
    // 3. חשבו את סכום כל המספרים
    // 4. מצאו את הערך המרבי
    // 5. אל תשכחו לשחרר את הזיכרון באמצעות delete[]
    
    // הדפיסו את התוצאות (החליפו במשתנים המתאימים)
    cout << "Array size: " << size << endl;
    cout << "Sum: " << /* משתנה הסכום */ << endl;
    cout << "Maximum: " << /* משתנה הערך המרבי */ << endl;
    
    return 0;
}

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

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