אתגר חזרה מס' 2
חלק מהיחידה יסודות במסלול ה-C של Coddy. שיעור 60 מתוך 63.
אתגר
קלבוא נבחן את הכישורים שלך בעיבוד מערכים בשפת C!
צור תוכנית שמבצעת פעולות על מערך דו־ממדי (מטריצה):
- צור פונקציה
rotateMatrixש:- מקבלת את המטריצה המקורית, מטריצה שנייה שתמלא בתוצאה המסובבת, ואת הגודל
- מסובבת את המטריצה 90 מעלות בכיוון השעון
השתמש בזה כדי לסובב את המטריצה:rotated[j][size-1-i] = original[i][j]; - כותבת את התוצאה למטריצה השנייה (הפונקציה מחזירה
void; הפונקציהmainהנתונה מדפיסה אותה עבורך)
- צור פונקציה
findElementש:- מקבלת מערך של מספרים שלמים דו־ממדי, את גודלו וערך יעד
- מחזירה 1 אם ערך היעד נמצא במטריצה, ו־0 אחרת
נסו בעצמכם
#include <stdio.h>
void rotateMatrix(int original[][10], int rotated[][10], int size);
int findElement(int matrix[][10], int size, int target);
void rotateMatrix(int original[][10], int rotated[][10], int size) {
// הקוד שלך כאן
}
int findElement(int matrix[][10], int size, int target) {
// הקוד שלך כאן
}
// אין לשנות את הקוד שלהלן
int main() {
int size;
scanf("%d", &size);
int matrix[10][10];
int rotated[10][10];
int value = 1;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
matrix[i][j] = value++;
}
}
printf("Original Matrix:\n");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
rotateMatrix(matrix, rotated, size);
printf("Rotated Matrix:\n");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf("%d ", rotated[i][j]);
}
printf("\n");
}
printf("\n");
int result = findElement(matrix, size, 10);
if (result) {
printf("Found\n");
} else {
printf("Not found\n");
}
return 0;
}
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: קומפיילר C אונליין