Perlで下記のような分岐条件を作りたいと思っています。


選択肢 A
選択肢 B
選択肢 C
選択肢 D
選択肢 E
選択肢 F

と言う選択肢6個を用意して、選択された内容に応じて
以下のような分岐条件にしたい場合どのような方法が最適でしょうか?

●6個選択された場合 → 結果1
●5個選択された場合 → 結果2
●0個の場合 → 結果3
●1~4個選択された場合 → 結果4
(1個の場合で、Aの場合はだけ → 結果5)

ご教授のほどよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/08/26 23:33:49
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:randk No.2

回答回数77ベストアンサー獲得回数4

ポイント35pt

my $cnt = 0;

(選択肢 Aの論理式) and $cnt++;

(選択肢 Bの論理式) and $cnt++;

(選択肢 Cの論理式) and $cnt++;

(選択肢 Dの論理式) and $cnt++;

(選択肢 Eの論理式) and $cnt++;

(選択肢 Fの論理式) and $cnt++;

$cnt == 6 and (結果1);

$cnt == 5 and (結果2);

$cnt == 0 and (結果3);

$cnt < 5 and (結果4);

でいいんじゃないかと思います。

もっと短くもできるでしょうけど可読性と趣味しだいかと。

後半部の評価回数を減らしたければif,elsifで分岐させればよいです。

  • id:tk378mx
    GoldenDawn様 randk様
    ご回答頂きありがとうございました。
    お礼を書く前に閉めてしまったのでこちらで失礼します。
  • id:randk
    補足します。2番の回答だと、結果4のときに結果3も実行されちゃいますね・・・^^;
    正しくは、たとえば

    if ($cnt == 0 ){
    結果3
    }else{
    結果1 if $cnt == 6;
    結果2 if $cnt == 5;
    結果4 if $cnt < 5;
    }

    みたいな感じです。もちろんswitchモジュールつかってもいいですけど。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません