復習チャレンジ #2
CoddyのCジャーニー「基礎」セクションの一部。レッスン 60/63。
チャレンジ
簡単Cで配列操作のスキルを試してみましょう!
2次元配列(行列)に対して操作を実行するプログラムを作成してください。
- 次の処理を行う関数
rotateMatrixを作成してください。- original matrix、回転後の結果を格納する2つ目の matrix、および size を受け取る
- matrixを時計回りに90度回転する
matrixの回転には次の式を使用してください:rotated[j][size-1-i] = original[i][j]; - 結果を2つ目の matrix に書き込む(関数は
voidを返します。指定されたmainが結果を出力します)
- 次の処理を行う関数
findElementを作成してください。- 2次元整数配列、その size、および target の値を受け取る
- target が matrix 内で見つかった場合は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オンラインコンパイラ