以下のプログラムが上手く動作するようにFlower列挙を定義しなさい。#include \u0026lt;stdio.h\u0026gt;// ここにFlower列挙を定義int main(void){ int i; Flower flowers[] = {2, 3, 0, 1}; for (i=0;i\u0026lt;4;i++) { switch(flowers[i]) { case IRIS: printf(\u0026quot;アヤメ\\u0026quot;); break; case TULIP: printf(\u0026quot;チューリップ\\u0026quot;); break; case LILY: printf(\u0026quot;ユリ\\u0026quot;); break; case DANDELION: printf(\u0026quot;タンポポ\\u0026quot;); break; } } return 0;}ずっとわからなくて教えてほしいです

1件の回答

回答を書く

1135888

2026-07-10 15:20

+ フォロー

\u0026gt;Flower列挙を定義

データ構造としてはENUMと名前を一対一で紐づけしたいので、C言語だと言語の機能の制約によって意図すべきところから外れてしまうので良くないです。



C++の連想配列mapを使えばこのように意図通りにできます。



map\u0026lt;Flower, string\u0026gt; names {

{Flower::Iris, \u0026quot;アヤメ\u0026quot;},

{Flower::Tulip, \u0026quot;チューリップ\u0026quot;},

{Flower::Lily, \u0026quot;ユリ\u0026quot;},

{Flower::Dandelion, \u0026quot;タンポポ\u0026quot;},

};



これをつかうとEnumが与えられるだけで名前が出ます。データ構造をもちいてスイッチ文を消すのが良いからです。



Flower f = Flower::Iris;

cout \u0026lt;\u0026lt; names[f] \u0026lt;\u0026lt; endl;



あるいはC言語やC++のENUMは機能が低すぎるのでJavaのEnumを使うのが良いです。現代では欠陥品といえるENUMを与えられるので工夫とやらを行ってムダなswitch文を書かねばならないからです。

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有