מצביע ומערך דינמי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 56 מתוך 56.
אתגר
קלצרו תוכנית שמדגימה ניהול זיכרון דינמי באמצעות בניית מערכת גמישה לאחסון ולעיבוד מספרים. האתגר הזה יבחן את ההבנה שלכם במערכים דינמיים, בהקצאת זיכרון, במניפולציה של מערכים ובשחרור נכון של זיכרון.
הקלטים הבאים יסופקו:
- מספר שלם
sizeשמייצג את מספר המספרים השלמים לאחסון - לאחר מכן
sizeמספרים שלמים שמייצגים את המספרים שיש לאחסן במערך הדינמי
התוכנית שלכם צריכה:
- לקרוא את הגודל מהקלט
- להקצות באופן דינמי מערך של מספרים שלמים באמצעות
new[]בגודל שצוין - לקרוא את המספרים השלמים מהקלט ולאחסן אותם במערך שהוקצה באופן דינמי
- לחשב את סכום כל המספרים במערך
- למצוא את הערך המרבי במערך
- להדפיס את התוצאות בפורמט שצוין
- לשחרר כראוי את הזיכרון באמצעות
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;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מצביעים וזיכרון
מהו מצביע?אופרטור קבלת כתובתאופרטור ביטול הפניהמצביעי Nullמצביעים ומערכיםזיכרון דינמי באמצעות 'new'שחרור זיכרון באמצעות 'delete'סיכום — תרגול מצביעים2וקטורים (מערכים דינמיים)
היכרות עם std::vectorיצירת וקטורהוספת איבריםגישה לאיבריםגודל הווקטורמעבר על איברים באמצעות לולאת forלולאת for מבוססת טווחהסרת איבריםסיכום — פעולות על וקטורים5פרויקט: כלי לניהול מלאי
הגדרת הפרויקטהוספה ועדכון של פריטיםתרגלו בעצמכם: קומפיילר C++ אונליין