まとめ:typedef と Enum の演習
CoddyのCジャーニー「論理と制御フロー」セクションの一部。レッスン 60/63。
チャレンジ
簡単enum と typedef を組み合わせて、シンプルな図形の面積計算プログラムを作成するC言語のプログラムを作成してください。プログラムの要件は以下の通りです:
- 以下の定数をこの順番で持つ、
ShapeTypeという名前のenumを定義します:CIRCLERECTANGLETRIANGLE
typedefを使用して、enum ShapeTypeの型エイリアスとしてShapeという名前を作成します。- 以下の仕様で
calculateAreaという名前の関数を作成します:Shape型のパラメータshapeを受け取ります。- 2つの
float型のパラメータdimension1とdimension2を受け取ります。 - 計算された面積を
float型で返します。 switch文を使用して、図形の種類に基づいて面積を計算します:CIRCLEの場合:面積 = 3.14159 * dimension1 * dimension1 (dimension1 は半径)RECTANGLEの場合:面積 = dimension1 * dimension2 (長さ × 幅)TRIANGLEの場合:面積 = 0.5 * dimension1 * dimension2 (0.5 × 底辺 × 高さ)
- 以下の仕様で
printShapeInfoという名前の関数を作成します:Shape型のパラメータshapeを受け取ります。- 戻り値はありません (void)。
switch文を使用して、図形の情報を表示します:CIRCLEの場合:Shape: Circleと出力します。RECTANGLEの場合:Shape: Rectangleと出力します。TRIANGLEの場合:Shape: Triangleと出力します。
- main 関数内で以下を実装します:
Shape型の変数selectedShapeを宣言します。- 2つの
float型の変数dim1とdim2を宣言します。 - 入力から3つの値を読み取ります:図形の選択を表す整数 (0, 1, または 2) と、2つの浮動小数点数の寸法。
- 入力に基づいて、対応する enum 値を
selectedShapeに代入します。 - 寸法の値を
dim1とdim2に代入します。 selectedShapeを引数にしてprintShapeInfo関数を呼び出します。- 寸法を次の形式で出力します:
Dimensions: [dim1] [dim2] calculateArea関数を呼び出して面積を計算します。- 計算された面積を、小数点以下2桁で次の形式で出力します:
Area: [area] - 計算された面積に基づいて、図形のカテゴリを判定して出力します:
- 面積が 10.0 未満の場合:
Category: Smallと出力します。 - 面積が 10.0 以上 50.0 以下の場合:
Category: Mediumと出力します。 - 面積が 50.0 より大きい場合:
Category: Largeと出力します。
- 面積が 10.0 未満の場合:
この課題は、enum と typedef の強力な組み合わせを実証するものです。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;
}論理と制御フローのすべてのレッスン
10Enum と typedef
名前付き定数のための EnumEnum の宣言と使用switch 文での Enum の利用型エイリアスのための typedef の使用構造体での typedefまとめ:typedef と Enum の演習自分で練習してみよう: Cオンラインコンパイラ