Menu
Coddy logo textTech

מערכים תלת־ממדיים ומעבר להם

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Java של Coddy. שיעור 7 מתוך 59.

כשם שאפשר ליצור מערכים דו־ממדיים (מערכים של מערכים), אפשר ליצור מערכים תלת־ממדיים (מערכים של מערכים של מערכים), מערכים ארבעה־ממדיים וכן הלאה. הם נקראים מערכים רב־ממדיים.

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

כך מצהירים על מערך תלת־ממדי ומאתחלים אותו ב-Java:

data_type[][][] array_name = new data_type[depth][rows][columns];
  • data_type: סוג האיברים שהמערך יכיל.
  • array_name: שם המערך.
  • depth: מספר המערכים הדו־ממדיים (עומק).
  • rows: מספר השורות בכל מערך דו־ממדי.
  • columns: מספר העמודות בכל מערך דו־ממדי.

לדוגמה, כדי ליצור מערך תלת־ממדי של מספרים שלמים בממדים 2x3x4, תכתוב:

int[][][] cube = new int[2][3][4];

אפשר גם לאתחל מערך תלת־ממדי ישירות:

int[][][] cube = {
    {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    },
    {
        {13, 14, 15, 16},
        {17, 18, 19, 20},
        {21, 22, 23, 24}
    }
};
challenge icon

אתגר

קל

כתוב תוכנית שמקבלת שלושה ארגומנטים שלמים: depth, rows ו-cols. עליה ליצור מערך תלת־ממדי של מספרים שלמים בממדים שצוינו ולאתחל כל איבר במערך למכפלה של אינדקסי העומק, השורה והעמודה שלו (החל מ-1).

לדוגמה, הערך של האיבר ב-[d][r][c] צריך להיות (d + 1) * (r + 1) * (c + 1).

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

Depth 0:
1 2 3 4 
2 4 6 8 
3 6 9 12 
Depth 1:
2 4 6 8 
4 8 12 16 
6 12 18 24

נסו בעצמכם

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int depth = scanner.nextInt();
        int rows = scanner.nextInt();
        int cols = scanner.nextInt();

        int[][][] array3D = new int[depth][rows][cols];
        // כתבו את הקוד שלכם למטה

        // הדפיסו את המערך התלת־ממדי
        for (int d = 0; d < depth; d++) {
            System.out.println("Depth " + d + ":");
            for (int r = 0; r < rows; r++) {
                for (int c = 0; c < cols; c++) {
                    System.out.print(array3D[d][r][c] + " ");
                }
                System.out.println();
            }
        }
    }
}
quiz iconבחנו את עצמכם

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

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

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