הגדרה ויצירה

// מערך דו-מימדי 3×4 (3 שורות, 4 עמודות)
int[][] mat = new int[3][4];

// מערך ריבועי 3×3 עם ערכים
int[][] sq = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

mat.length = מספר שורות, mat[0].length = מספר עמודות.

מעבר בלולאה כפולה

// מעבר שורה-שורה
for (int i = 0; i < mat.length; i++) {
    for (int j = 0; j < mat[i].length; j++) {
        System.out.print(mat[i][j] + " ");
    }
    System.out.println();
}

מערך ריבועי – תכונות

במערך ריבועי n×n (כלומר mat.length == mat[0].length):

[0][0] [1][1] [2][2] [3][3]
מערך ריבועי 4×4. התאים הכחולים הם האלכסון הראשי (i == j).

אלכסון ראשי

התנאי: i == j

for (int i = 0; i < mat.length; i++) {
    System.out.println(mat[i][i]);
}

אלכסון משני

התנאי: i + j == n - 1

int n = mat.length;
for (int i = 0; i < n; i++) {
    System.out.println(mat[i][n - 1 - i]);
}

מעל / מתחת לאלכסון הראשי

אזורתנאי
אלכסון ראשיi == j
מעל לאלכסון הראשיi < j
מתחת לאלכסון הראשיi > j
אלכסון משניi + j == n - 1
מעל לאלכסון המשניi + j < n - 1
מתחת לאלכסון המשניi + j > n - 1

פעולות נפוצות

סכום שורה מסוימת

public static int sumRow(int[][] mat, int row) {
    int sum = 0;
    for (int j = 0; j < mat[row].length; j++)
        sum += mat[row][j];
    return sum;
}

סכום עמודה מסוימת

public static int sumCol(int[][] mat, int col) {
    int sum = 0;
    for (int i = 0; i < mat.length; i++)
        sum += mat[i][col];
    return sum;
}

סכום האלכסון הראשי

public static int sumMainDiag(int[][] mat) {
    int sum = 0;
    for (int i = 0; i < mat.length; i++)
        sum += mat[i][i];
    return sum;
}

טרנספוזה (Transpose)

שיקוף המטריצה סביב האלכסון הראשי – שורות הופכות לעמודות:

public static int[][] transpose(int[][] mat) {
    int n = mat.length;
    int[][] t = new int[n][n];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            t[j][i] = mat[i][j];
    return t;
}

שאלות נפוצות

מה ההבדל בין mat.length ל-mat[0].length?

mat.length – מספר השורות. mat[0].length – מספר העמודות בשורה הראשונה. במערך ריבועי הם שווים.

מהו "משולש עליון" במטריצה?

כל האיברים שנמצאים על האלכסון הראשי ומעליו (i ≤ j). "משולש תחתון" – על האלכסון ומתחתיו (i ≥ j).

איך בודקים אם מטריצה סימטרית?

מטריצה סימטרית אם mat[i][j] == mat[j][i] לכל i,j. מספיק לבדוק רק מעל לאלכסון.

צריכים עזרה במערכים דו-מימדיים?

מורים פרטיים ילמדו אתכם מטריצות, אלכסונים ותרגילי בגרות.

מצאו מורה פרטי