***すれ立てるまでもない質問はここで 第2刷***
数字が順番にならんでるなら配列にして数字の個数を2で割れ>75
バラバラならソートでも使え。
1 5 6 <-数
0 1 2 <-インデックス
3 / 2 = 1
答え5
80 :
79:2001/05/19(土) 01:27
ソートする場合、完全に行なう必要は無い。2分できればいいだけだから。>75
81 :
74:2001/05/19(土) 01:31
>>79 んー、要素がいっぱいあるならそれでいいのだけど
3個に限られてるのでサクッと出来るようなものがないかなと…。
82 :
>74:2001/05/19(土) 01:34
素直にif使うのが最速だよ。これが遅ければ
Intelにメールして一命令でできるようにしてもらえ。
3こなら、2回の比較で済むだろ>81
84 :
74:2001/05/19(土) 01:52
>>82 そうですね。
なんか嫌なコードになりますが。
>>83 最高とか最低より一回多いのよ。
2回ですむこともあるけど。
みなさま答えてくれてありがとう。
#define center(a, b, c) min(max(a, b), c)
これで合ってるかな??
86 :
74:2001/05/19(土) 02:07
>>85 center(4, 3, 1)
うう、、、。
正しくはこうか?>85
#define center(a, b, c) max(min(a, b), c)
88 :
85:2001/05/19(土) 02:23
ぐはぁ。駄目か。鬱氏。
89 :
85:2001/05/19(土) 02:25
>>87 center(0, 1, 2);
このアイデアは無かったということで。
だめだ>86
center(1, 3, 5)
もうねる
template<class T> T center(vector<T> v)
{
sort(v.begin(), v.end());
return v[v.size()/2];
}
92 :
デフォルトの名無しさん:2001/05/19(土) 04:31
やっぱソートした方が良いよ。うん。
#define center(a, b, c) (a<b)?max(min(b, c),a):min(max(b,c),a)
>>94 if-elseの形が変わっただけ?
一応動くけど・・・。