• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++で困っています。かなり初歩的だと思いますがよろしくお願いします。)

C++で三つの整数の中央値を求める方法

このQ&Aのポイント
  • C++で三つの整数の中央値を求めるプログラムを作成する方法について解説します。
  • この記事では、キーボードから読み込んだ三つの整数の中央値を求めるC++のプログラムを短く効率的に書く方法について説明します。
  • C++を使って、キーボードから読み込んだ三つの整数の中央値を求めるプログラムを短く書く方法について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

#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; }

jaron
質問者

お礼

なるほど・・条件演算子の中にまた条件演算子を入れて2番目を求めるわけですか! この発想はありませんでした。 ただ、僕の頭が悪いのかパッと理解することができませんでした。 上級者になるとこういうのも一瞬でわかるものなんですかね・・。 ありがとうございました。勉強になりました。

その他の回答 (4)

回答No.5

すみません、このケースで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; }

jaron
質問者

お礼

おぉ、そういやソートしてくれる関数?のようなものがありましたね。 別の本で読んだときに知りました。 僕が書かなかったのが悪いのですが、実は僕はif文と演算子だけで書いて欲しかったんです・・。 ごめんなさい! こんな方法もあるのだと勉強になりました。 ありがとうございました!

回答No.4

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)
回答No.3

cout << "三つ入力してください"; cin >> a >> b >> c; int center = b; if( a > center ) center = a; if( center > c ) center = c; cout << "中間値は" << center << "です" << endl; ---------------------------------- ではどうでしょうか。

jaron
質問者

お礼

答えていただいてありがとうございました。 ですが、実行すると時々間違いがありましたので、できれば確認してから投稿してほしかったです・・。 a = 5, b = 3, c = 2 と入力すると中間値は2とでました。きっと最後の部分では b と c のどちらが大きいか分かっていないため、こうなったのだと思います。

回答No.2

#1です。 変数宣言部を以下に訂正してください。   int a, b, c, center;