Menu
Coddy logo textTech

תבניות נפוצות במערכים דו־ממדיים

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

דפוסים מסוימים מופיעים לעיתים קרובות בעבודה עם מערכים דו־ממדיים. זיהוי הדפוסים האלה יכול לעזור לך לפתור בעיות ביעילות רבה יותר. הנה כמה דפוסים נפוצים:

מעבר באלכסון

גישה לאיברים שבהם אינדקס השורה שווה לאינדקס העמודה (matrix[i][i]) נותנת לך את האלכסון הראשי. באלכסון המשני, סכום אינדקסי השורה והעמודה שווה לגודל המערך פחות 1 (matrix[i][size - 1 - i]).

לדוגמה:

1  2  3
4  5  6
7  8  9

עוברים לאורך האלכסון הראשי (matrix[i][i]): 1, 5, 9
עוברים לאורך האלכסון המשני (matrix[i][size - 1 - i]): 3, 5, 7

מעבר על הגבול

כדי לעבור על איברי הגבול, משאירים אינדקס אחד קבוע (0 או size - 1) בזמן שחוזרים על פני האינדקס האחר.

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

לדוגמה:

1  2  3  4
5  6  7  8
9 10 11 12

איברי הגבול: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (הכול מלבד 6 ו-7)

challenge icon

אתגר

קל

צור מתודה בשם printPatterns שמקבלת כקלט מערך דו־ממדי ריבועי של מספרים שלמים (matrix) ומדפיסה את התבניות הבאות:

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

הפלט אמור להיראות כך:

Main Diagonal: 1 6 11 16 
Anti-Diagonal: 4 7 10 13 
Top Border: 1 2 3 4 
Bottom Border: 13 14 15 16 
Left Border: 1 5 9 13 
Right Border: 4 8 12 16

נסו בעצמכם

// כתבו את הקוד שלכם רק בתוך המחלקה. אל תכתבו main() או קוד כלשהו מחוץ למחלקה זו.
class PrintPatterns {
    public static void printPatterns(int[][] matrix) {
        // כתבו את הקוד שלכם כאן
    }
}
quiz iconבחנו את עצמכם

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

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

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