תבניות נפוצות במערכים דו־ממדיים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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)
אתגר
קלצור מתודה בשם printPatterns שמקבלת כקלט מערך דו־ממדי ריבועי של מספרים שלמים (matrix) ומדפיסה את התבניות הבאות:
- אלכסון ראשי: הדפס את כל האיברים שבהם אינדקס השורה שווה לאינדקס העמודה.
- אלכסון משני: הדפס את כל האיברים שבהם סכום אינדקסי השורה והעמודה שווה לגודל המטריצה פחות 1.
- גבולות: הדפס את איברי הגבול העליון, התחתון, השמאלי והימני של המטריצה.
הפלט אמור להיראות כך:
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) {
// כתבו את הקוד שלכם כאן
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכיםתרגלו בעצמכם: קומפיילר Java אונליין