プロが教えるわが家の防犯対策術!

Flash CS6 AS3.0にて制作しております。
テキストボックスが4つありそれぞれに2ケタの数字が入ります。

全ての値が同じ数値なら0円、
3つ同じで1つ違う場合(2種類の数値)は1,050円、
2つ同じで2つが違う場合(3種類の数値)は2,100円、
全て違う場合(4種類の数値)は3,150円、

という計算がしたく以下のようにif文でずらずら書きましたが実際はテキストボックスが40個ほどあり
大量の計算式をずらずら並べないといけません。すっきりとまとめる方法や関数がありましたら
教えて下さい。宜しくお願いします。

if (pass1 == pass2) {
//pass2がpass1と同じなら0
data2 = 0;
} else if (pass1 != pass2) {
//pass2がpass1と違うなら1050
data2 = 1050;
}
if (pass1 == pass3) {
//pass3がpass1と同じなら0
data3 = 0;
} else if (pass1 != pass3 && pass2 == pass3) {
//pass3がpass1とは違うがpass2と同じなら0
data3 = 0;
} else if (pass1 != pass3 && pass2 != pass3) {
//pass3がpass1ともpass2とも違うなら1050
data3 = 1050;
}
if (pass1 == pass4) {
//pass4がpass1と同じなら0
data4 = 0;
} else if (pass1 != pass4 && pass2 == pass4 && pass3 != pass4) {
//pass4がpass1とpass3とは違うがpass2と同じなら0
data4 = 0;
} else if (pass1 != pass4 && pass2 != pass4 && pass3 == pass4) {
//pass4がpass1ともpass2とも違うがpass3とは同じなら0
data4 = 0;
} else if (pass1 != pass4 && pass2 != pass4 && pass3 != pass4) {
//pass4がpass1ともpass2ともpass3とも違うなら0
data4 = 0;
}
total = data2+data3+data4;

A 回答 (1件)

一般的には、


1) 40個の値を昇順/降順どちらでも並べ替え
2) 端から値を2つずつ比較
3) 値が異なってれば値の種類の数を+1
とか。

3, 7, 15, 4, 8, 7, 12, 1, 10, 8, 9, 7
だと分かりにくいけど、
1, 3, 4, 7, 7, 7, 8, 8, 9, 10, 12, 15
なら数えやすいみたいな。

--
> 実際はテキストボックスが40個ほどあり

でも、入る数字が00~99の2桁なら、
1) 0~99までループ
2) 対象の数字と40個の数字と一致するものがあれば種類の数を+1
とかでもループ回数はたかが知れてるのでOKだと思いますし。
    • good
    • 0
この回答へのお礼

返答ありがとうございます。おかげさまで以下のやり方で無事解決しました。
var myValue:Array = [pass1.text,pass2.text,pass3.text,pass4.text];
myValue.sort(Array.NUMERIC);

if (myValue[0] == myValue[1])
{
hikaku_pass_1.text = "0";
}
else
{
hikaku_pass_1.text = "1";
}

if (myValue[1] == myValue[2])
{
hikaku_pass_2.text = "0";
}
else
{
hikaku_pass_2.text = "1";
}

if (myValue[2] == myValue[3])
{
hikaku_pass_3.text = "0";
}
else
{
hikaku_pass_3.text = "1";
}

hikaku_pass_total.text = String(int(hikaku_pass_1.text) + int(hikaku_pass_2.text) + int(hikaku_pass_3.text));


あとはこれをfor文ですっきりまとめる事が出来れば完璧なので考えてみます。

お礼日時:2014/01/06 21:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!