Menu
Coddy logo textTech

מערכים רב־ממדיים

חלק מהיחידה יסודות במסלול ה-C של Coddy. שיעור 56 מתוך 63.

מערך רב־ממדי הוא מערך של מערכים. ב-C אפשר ליצור מערך דו־ממדי (המערך הרב־ממדי הנפוץ ביותר), שהוא למעשה טבלה עם שורות ועמודות.

הצהר על מערך דו־ממדי:

int matrix[3][4];

כך נוצר מערך דו־ממדי עם 3 שורות ו־4 עמודות.

אפשר לאתחל מערך דו־ממדי בעת ההכרזה עליו:

int matrix[3][4] = {
    {1, 2, 3, 4},    // השורה הראשונה
    {5, 6, 7, 8},    // השורה השנייה
    {9, 10, 11, 12}  // השורה השלישית
};

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

int value = matrix[1][2];  // ניגש לשורה 1, עמודה 2 (value יהיה 7)

כדי לשנות איבר במערך דו־ממדי:

matrix[0][3] = 100;  // משנה את האיבר בשורה 0, עמודה 3 ל-100

אפשר גם להשתמש בלולאות מקוננות כדי לגשת לכל האיברים במערך דו־ממדי:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++) {
        printf("%d ", matrix[i][j]);
    }
    printf("\n");  // שורה חדשה אחרי כל שורה במטריצה
}
challenge icon

אתגר

קל

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

הפונקציה צריכה:

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

לדוגמה, עבור המערך:

1 2 3 4 5 6 7 8 9

הפונקציה צריכה להדפיס: 1 5 9

נסו בעצמכם

#include <stdio.h>

// פונקציה להדפסת איברי האלכסון של מטריצה ריבועית
void printDiagonal(int matrix[][100], int size) {
    // כתבו את הקוד שלכם כאן
    
}

int main() {
    int size;
    scanf("%d", &size);
    
    int matrix[100][100];
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }
    
    printDiagonal(matrix, size);
    
    return 0;
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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