Menu
CoddyTech

העתקת מערכים

חלק מהיחידה יסודות במסלול ה-C# של Coddy. שיעור 58 מתוך 70.

כדי להעתיק איברים ממערך אחד לאחר, השתמשו ב־Array.Copy. הוא מקבל חמישה ארגומנטים:

Array.Copy(source, sourceIndex, destination, destinationIndex, length);

הוא מעתיק length איברים מתוך source, החל מ־sourceIndex, וכותב אותם לתוך destination, החל מ־destinationIndex. מערך היעד חייב כבר להתקיים ולהיות גדול מספיק.

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

int[] scores = {90, 75, 60, 85};
int[] firstTwo = new int[2];
Array.Copy(scores, 0, firstTwo, 0, 2);
// הערך של firstTwo יהיה {90, 75}

destinationIndex הוא המקום שאליו מגיע האיבר הראשון שהועתק. שימוש ב־source.Length בתור הכמות מעתיק את כל המערך, בלי קשר לגודלו:

int[] source = {1, 2, 3};
int[] destination = new int[6];
Array.Copy(source, 0, destination, 3, source.Length);
// destination יהיה {0, 0, 0, 1, 2, 3}

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

int[] first = {1, 2};
int[] second = {7, 8, 9};
int[] all = new int[first.Length + second.Length];
Array.Copy(first, 0, all, 0, first.Length);
Array.Copy(second, 0, all, first.Length, second.Length);
// הערך של all יהיה {1, 2, 7, 8, 9}

כששני המערכים מתחילים באינדקס 0, יש צורה קצרה יותר, Array.Copy(source, destination, length):

int[] source = {4, 5, 6, 7};
int[] destination = new int[3];
Array.Copy(source, destination, 3);
// destination יהיה {4, 5, 6}
challenge icon

אתגר

קל

צרו מתודה בשם AddToEnd שמקבלת מערך של מחרוזות ומחרוזת item. היא מחזירה מערך חדש שמכיל את כל איברי המערך, באותו סדר, כאשר item נוסף בסוף.

לדוגמה, AddToEnd(new string[] {"a", "b", "c"}, "d") מחזירה ["a", "b", "c", "d"].

השתמשו ב-Array.Copy() כדי להעתיק את האיברים למערך החדש.

פורמט הקלט (2 שורות):

  • שורה 1: איברי המערך מופרדים בפסיקים (למשל a,b,c)
  • שורה 2: הפריט להוספה (למשל d)

פורמט הפלט: איברי המערך החדש מופרדים בפסיק וברווח (למשל a, b, c, d)

נסו בעצמכם

using System;

public class Program {
    public static string[] AddToEnd(string[] arr, string item) {
        // כתבו כאן את הקוד
    }

    public static void Main(string[] args) {
        string[] arr = Console.ReadLine().Split(',');
        string item = Console.ReadLine();
        string[] result = AddToEnd(arr, item);
        Console.WriteLine(string.Join(", ", result));
    }
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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