Menu
Coddy logo textTech

まとめ:typedef と Enum の演習

CoddyのCジャーニー「論理と制御フロー」セクションの一部。レッスン 60/63。

challenge icon

チャレンジ

簡単

enumtypedef を組み合わせて、シンプルな図形の面積計算プログラムを作成するC言語のプログラムを作成してください。プログラムの要件は以下の通りです:

  1. 以下の定数をこの順番で持つ、ShapeType という名前の enum を定義します:
    • CIRCLE
    • RECTANGLE
    • TRIANGLE
  2. typedef を使用して、enum ShapeType の型エイリアスとして Shape という名前を作成します。
  3. 以下の仕様で calculateArea という名前の関数を作成します:
    • Shape 型のパラメータ shape を受け取ります。
    • 2つの float 型のパラメータ dimension1dimension2 を受け取ります。
    • 計算された面積を float 型で返します。
    • switch 文を使用して、図形の種類に基づいて面積を計算します:
      • CIRCLE の場合:面積 = 3.14159 * dimension1 * dimension1 (dimension1 は半径)
      • RECTANGLE の場合:面積 = dimension1 * dimension2 (長さ × 幅)
      • TRIANGLE の場合:面積 = 0.5 * dimension1 * dimension2 (0.5 × 底辺 × 高さ)
  4. 以下の仕様で printShapeInfo という名前の関数を作成します:
    • Shape 型のパラメータ shape を受け取ります。
    • 戻り値はありません (void)。
    • switch 文を使用して、図形の情報を表示します:
      • CIRCLE の場合:Shape: Circle と出力します。
      • RECTANGLE の場合:Shape: Rectangle と出力します。
      • TRIANGLE の場合:Shape: Triangle と出力します。
  5. main 関数内で以下を実装します:
    • Shape 型の変数 selectedShape を宣言します。
    • 2つの float 型の変数 dim1dim2 を宣言します。
    • 入力から3つの値を読み取ります:図形の選択を表す整数 (0, 1, または 2) と、2つの浮動小数点数の寸法。
    • 入力に基づいて、対応する enum 値を selectedShape に代入します。
    • 寸法の値を dim1dim2 に代入します。
    • selectedShape を引数にして printShapeInfo 関数を呼び出します。
    • 寸法を次の形式で出力します:Dimensions: [dim1] [dim2]
    • calculateArea 関数を呼び出して面積を計算します。
    • 計算された面積を、小数点以下2桁で次の形式で出力します:Area: [area]
    • 計算された面積に基づいて、図形のカテゴリを判定して出力します:
      • 面積が 10.0 未満の場合:Category: Small と出力します。
      • 面積が 10.0 以上 50.0 以下の場合:Category: Medium と出力します。
      • 面積が 50.0 より大きい場合:Category: Large と出力します。

この課題は、enumtypedef の強力な組み合わせを実証するものです。typedef を使うことで、enum ShapeType と繰り返し書く代わりに、Shape という簡潔で読みやすい型名を作成できます。また、enum 定数を使用することで、switch 文が自己文書化され、各ケースが何を表しているかが明確になります。両方の概念を定義し、それらを関数のパラメータで使用し、enum 値に依存するロジックを実装する練習になります。

自分で試してみよう

#include <stdio.h>

// TODO: ここで列挙型 ShapeType と typedef を定義してください

// TODO: ここで calculateArea 関数を実装してください

// TODO: ここで printShapeInfo 関数を実装してください

int main() {
    // 入力を読み込む
    int shapeChoice;
    float dim1, dim2;
    scanf("%d", &shapeChoice);
    scanf("%f", &dim1);
    scanf("%f", &dim2);
    
    // TODO: 以下にコードを記述してください
    // selectedShape 変数を宣言し、shapeChoice に基づいて割り当てます
    // printShapeInfo 関数を呼び出します
    // 寸法を出力します
    // 面積を計算して出力します
    // カテゴリを判定して出力します
    
    return 0;
}

論理と制御フローのすべてのレッスン

自分で練習してみよう: Cオンラインコンパイラ