Menu
Coddy logo textTech

復習チャレンジ #2

CoddyのCジャーニー「基礎」セクションの一部。レッスン 60/63。

challenge icon

チャレンジ

簡単

Cで配列操作のスキルを試してみましょう!

2次元配列(行列)に対して操作を実行するプログラムを作成してください。

  1. 次の処理を行う関数 rotateMatrix を作成してください。
    • original matrix、回転後の結果を格納する2つ目の matrix、および size を受け取る
    • matrixを時計回りに90度回転する
      matrixの回転には次の式を使用してください:rotated[j][size-1-i] = original[i][j];
    • 結果を2つ目の matrix に書き込む(関数は void を返します。指定された main が結果を出力します)
  2. 次の処理を行う関数 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オンラインコンパイラ