C言語で制御文を使わずに順位に応じた評価を表示する方法

C言語関連

C言語では通常、if文やswitch文を使って条件分岐を行いますが、場合によっては制御文を使わずに処理を行う課題があります。今回はマラソン大会の順位に応じて評価を出力する例を、制御文を使わずに実現する方法を解説します。

配列を使った評価の割り当て

制御文を使わない場合、配列を活用して順位ごとの評価を事前に設定する方法が有効です。配列のインデックスに順位を対応させることで、順位を指定するだけで評価を取得できます。

例えば、順位1〜20の評価を配列に格納しておき、1位から5位まで「秀」、6位から10位まで「優」、11位から15位まで「普」、16位以降は「劣」として配列を作成します。

具体例: 配列による実装

次のように配列を定義することで、順位を入力すると対応する評価を出力できます。

char *hyouka[20] = {"秀","秀","秀","秀","秀","優","優","優","優","優","普","普","普","普","普","劣","劣","劣","劣","劣"};
int rank;
printf("順位を入力してください: ");
scanf("%d", &rank);
printf("評価: %s\n", hyouka[rank-1]);

この方法では、if文やswitch文を一切使わずに評価を出力できます。

インデックス計算による柔軟な方法

配列の長さを最小限にしたい場合、整数演算でインデックスを計算して評価を選択する方法もあります。たとえば、順位を5で割った結果をインデックスにして、評価文字列を格納した配列から取得することができます。

実例として、評価配列を {“秀”,”優”,”普”,”劣”} として、インデックス = (rank-1)/5 で取得できます。ただし16位以降は全て「劣」とするように、最大インデックスを3に制限する工夫が必要です。

まとめ: 制御文なしで条件に応じた処理を行うポイント

制御文を使わない場合、配列やインデックス計算を活用することで、条件に応じた処理を簡潔に行うことができます。配列に事前に評価を割り当てる方法や、演算でインデックスを計算する方法を組み合わせると、柔軟で拡張性のあるプログラムが作成できます。

コメント

タイトルとURLをコピーしました