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