Menu
Coddy logo textTech

מערך דינמי – הוספה

שיעור 14 מתוך 14 בקורס מצביעים ב-C++ של Coddy.

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

זוהי דוגמה קטנה לאופן שבו אפשר לשנות את המערך באופן דינמי ולגרום לו לפעול כאילו היה vector

  • יש לנו את המערך שהוקצה באופן דינמי בתחילה
  • אנחנו יוצרים מערך חדש שהוקצה באופן דינמי, באורך של + 1
  • אנחנו מעתיקים את כל האיברים מהמערך הישן לחדש
  • באינדקס האחרון (+1) אנחנו מוסיפים את האיבר הרצוי
  • אנחנו מוחקים את המערך הישן
  • ואנחנו גורמים למצביע של המערך הישן שנמחק להצביע על המערך החדש שהשתנה
  • לבסוף, בסוף התוכנית, אנחנו מוחקים את המצביע של המערך פעם אחרונה
int *array = new int[5]; // המערך הראשוני
for(int i = 0; i < 5; i++)
    array[i] = i + 1;
    
int *newarray = new int[6]; // מערך חדש שאורכו גדול ב-1

for(int i = 0; i < 5; i++)
    newarray[i] = array[i]; // העתק את כל האיברים
newarray[5] = 6; // הוסף את האיבר האחרון

delete[] array; // שחרר את הזיכרון של המערך הישן
array = newarray; // הגדר אותו כך שיצביע על המערך החדש

for(int i = 0; i < 5; i++)
    cout << array[i] << " ";
    
delete[] array; // שחרר את הזיכרון של המערך החדש
quiz iconבחנו את עצמכם

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

quiz iconבחנו את עצמכם

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

quiz iconבחנו את עצמכם

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

challenge icon

אתגר

קל

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

אל תשנה את קוד ברירת המחדל

נסו בעצמכם

#include <iostream>

using namespace std;

int main() {

    int *numbers = new int[5];
    for(int i = 0; i < 5; i++)
        numbers[i] = i + 1;
    // אל תשנו את הקוד שלמעלה


    // הכניסו כאן את הקוד שלכם

    // קלטו 3 מספרים שלמים

    // הוסיפו אותם באופן דינמי למערך "numbers"


    // אל תשנו את הקוד שלמטה
    for(int i = 0; i < 8; i++)
        cout << numbers[i] << " ";
    delete[] numbers;

    return 0;
}

כל השיעורים ביחידה מצביעים ב-C++

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