- ベストアンサー
C++で三つの整数の中央値を求める方法
- C++で三つの整数の中央値を求めるプログラムを作成する方法について解説します。
- この記事では、キーボードから読み込んだ三つの整数の中央値を求めるC++のプログラムを短く効率的に書く方法について説明します。
- C++を使って、キーボードから読み込んだ三つの整数の中央値を求めるプログラムを短く書く方法について解説します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#include<iostream> using namespace std; void main() { int a, b, c; cout << "三つ入力してください"; cin >> a >> b >> c; center = (a < c) ? ((a < b) ? ((b < c) ? b : c) : a) : ((a > b) ? ((b > c) ? b : c) : a); cout << "中間値は" << center << "です" << endl; }
その他の回答 (4)
- kenichiice
- ベストアンサー率72% (27/37)
すみません、このケースでstd::setを持ち出すのは適切でないと思い直したので、std::nth_elementを使う方法を示しておきます。 #include <algorithm> #include <iostream> #include <vector> using namespace std; int main() { vector<int> v(3); cout << "三つ入力してください"; cin >> v[0] >> v[1] >> v[2]; std::nth_element(v.begin(), v.begin() + 1, v.end()); cout << "中間値は" << v[1] << "です" << endl; }
お礼
おぉ、そういやソートしてくれる関数?のようなものがありましたね。 別の本で読んだときに知りました。 僕が書かなかったのが悪いのですが、実は僕はif文と演算子だけで書いて欲しかったんです・・。 ごめんなさい! こんな方法もあるのだと勉強になりました。 ありがとうございました!
- kenichiice
- ベストアンサー率72% (27/37)
std::setにソートさせて2番目の要素を取ってくるのはどうでしょうか。 #include <iostream> #include <set> #include <vector> using namespace std; int main() { vector<int> v(3); cout << "三つ入力してください"; cin >> v[0] >> v[1] >> v[2]; set<int> s(v.begin(), v.end()); cout << "中間値は" << *(++s.begin()) << "です" << endl; }
- tatsu99
- ベストアンサー率52% (391/751)
cout << "三つ入力してください"; cin >> a >> b >> c; int center = b; if( a > center ) center = a; if( center > c ) center = c; cout << "中間値は" << center << "です" << endl; ---------------------------------- ではどうでしょうか。
お礼
答えていただいてありがとうございました。 ですが、実行すると時々間違いがありましたので、できれば確認してから投稿してほしかったです・・。 a = 5, b = 3, c = 2 と入力すると中間値は2とでました。きっと最後の部分では b と c のどちらが大きいか分かっていないため、こうなったのだと思います。
- magicalpass
- ベストアンサー率58% (378/648)
#1です。 変数宣言部を以下に訂正してください。 int a, b, c, center;
お礼
なるほど・・条件演算子の中にまた条件演算子を入れて2番目を求めるわけですか! この発想はありませんでした。 ただ、僕の頭が悪いのかパッと理解することができませんでした。 上級者になるとこういうのも一瞬でわかるものなんですかね・・。 ありがとうございました。勉強になりました。