Menu
Coddy logo textTech

גישה לאיברי מערך דו־ממדי

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

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

הערה: ב־C# יש שני סוגים של מערכים רב־ממדיים: מערכים מלבניים (int[,]) ומערכים משוננים (int[][]). השיעור הזה עוסק במערכים משוננים, שבהם כל שורה היא מערך בפני עצמה.

צרו מערך משונן עם 3 שורות ו־4 עמודות:

int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];

השמה של ערך במיקום ספציפי (אינדקס שורה 1, אינדקס עמודה 2):

grid[1][2] = 42;

קרא ערך ממיקום מסוים (אינדקס שורה 0, אינדקס עמודה 3):

int value = grid[0][3];

מכיוון שהאינדקסים מתחילים ב־0, אינדקס שורה 0 הוא השורה הראשונה ואינדקס עמודה 3 הוא העמודה הרביעית.

זכור שמדדי מערך מתחילים ב־0, ולכן טווחי המדדים התקינים הם:

  • שורות: מדד 0 עד 2 (עבור מערך עם 3 שורות: השורה הראשונה היא במדד 0, השנייה במדד 1 והשלישית במדד 2)
  • עמודות: מדד 0 עד 3 (עבור מערך עם 4 עמודות: העמודה הראשונה היא במדד 0, השנייה במדד 1 וכן הלאה)
אם תנסה לגשת לאיבר מחוץ לטווחים האלה (כמו grid[3][2]), תקבל IndexOutOfRangeException.
challenge icon

אתגר

בינוני

כתבו מתודה בשם getElement שמקבלת שלושה ארגומנטים:

  1. מערך דו־ממדי של מספרים שלמים (int[][] matrix)
  2. אינדקס של שורה (int row)
  3. אינדקס של עמודה (int col)

המתודה צריכה להחזיר את האיבר במיקום שצוין אם האינדקסים תקינים. אם אחד האינדקסים מחוץ לטווח, המתודה צריכה להחזיר -1.

נסו בעצמכם

public class GetElement
{
    public static int getElement(int[][] array, int row, int col)
    {
        // כתבו את הקוד שלכם כאן
    }
}
quiz iconבחנו את עצמכם

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

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

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