C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++の三項演算子で最大値を求める方法|2つ・3つ・4つの数値に対応したサンプルコード

この記事では、与えられた複数の数値の中から最大値を求めるC++プログラムを、三項演算子(条件演算子)だけを使って実装する方法を解説します。

扱う数値のパターンは次の3種類です。

  • 2つの数値
  • 3つの数値
  • 4つの数値

コードの説明

ここでは、2つ・3つ・4つのいずれかの個数で数値が与えられ、三項演算子を活用してその中の最大の要素を見つけます。if文や標準ライブラリのmax関数などは使わず、三項演算子の組み合わせだけで条件分岐を実現するのがポイントです。

具体例で問題のイメージをつかみましょう。

2つの数値

入力: 4, 54
出力: 54

3つの数値

入力: 14, 40, 26
出力: 40

4つの数値

入力: 10, 54, 26, 62
出力: 62

解決アプローチ

三項演算子は「条件 ? 真のときに返す値 : 偽のときに返す値」という形式で記述します。この式を入れ子(ネスト)にすることで、3つ以上の数値の比較にも対応できます。

各ケースにおける三項演算子の実装は以下のとおりです。

2つの数値(a, b)の場合:

a > b ? a : b

3つの数値(a, b, c)の場合:

(a>b) ? ((a>c) ? a : c) : ((b>c) ? b : c)

まずaとbを比較し、大きい方の値とcを比較することで、最終的な最大値を1文で求めています。

4つの数値(a, b, c, d)の場合:

(a>b && a>c && a>d) ?
    a :
    (b>c && b>d) ?
        b :
        (c>d)? c : d

aが残り3つすべてより大きければaを返し、そうでなければbがc・dより大きいかどうかを判定、最後にcとdの大小を比較して最大値を確定させます。

2つの数値の最大値を求めるサンプルコード

#include <iostream>
using namespace std;

int main() {
    int a = 4, b = 9;
    cout<<"2つの要素のうち大きい方は "<<( (a > b) ? a : b );
    return 0;
}

実行結果

2つの要素のうち大きい方は 9

3つの数値の最大値を求めるサンプルコード

#include <iostream>
using namespace std;

int findMax(int a, int b, int c){
    int maxVal = (a>b) ?
                 ((a>c) ?
                  a : c) :
                 ((b>c) ?
                  b : c);
    return maxVal;
}

int main() {
    int a = 4, b = 13, c = 7;
    cout<<"3つの要素のうち大きい方は "<<findMax(a, b, c);
    return 0;
}

実行結果

3つの要素のうち大きい方は 13

4つの数値の最大値を求めるサンプルコード

#include <iostream>
using namespace std;

int findMax(int a, int b, int c, int d){
    int maxVal = ( (a>b && a>c && a>d) ? a :
                   (b>c && b>d) ? b :
                   (c>d)? c : d );
    return maxVal;
}

int main() {
    int a = 4, b = 13, c = 7, d = 53;
    cout<<"4つの要素のうち大きい方は "<<findMax(a, b, c, d);
    return 0;
}

実行結果

4つの要素のうち大きい方は 53

まとめ

三項演算子を入れ子にすれば、if文を使わずに2つ以上の数値の最大値を簡潔に求められます。ただし、比較対象が増えるほど式が長くなり読みにくくなるため、実務では上記のように関数として切り出し、再利用しやすい形にしておくのがおすすめです。

  1. C++で列車の停車駅の組み合わせ数を求める方法

    地点XとYの間にはn個の中間駅があるとします。ここで、「どの2つの停車駅も隣り合わない」という条件のもとで、s個の駅に停車する列車の配置方法が何通りあるかを求める問題を考えてみましょう。この記事では、停車駅の組み合わせ数を求めるためのアプローチを段階的に詳しく解説します。この問題は、本質的には組合せ論の問題であり、s個の停車駅の選び方の総数を求めることになります。 問題を解くアプローチ まず具体例として、中間駅が8個あり、そのうち3個の駅に停車させたい場合を考えてみます。 n = 8, s = 3 このとき、列車が停車できない駅は(n − s)、つまり5個残ることになります。 停車できない

  2. C++で楕円の面積を求めるプログラムの作成方法

    この記事では、C++を使って楕円(だえん)の面積を求める方法を解説します。楕円にはいくつかの重要な構成要素があり、それぞれの意味を理解しておくと計算の仕組みがより明確になります。楕円の主な構成要素要素説明中心楕円の中心点。2つの焦点を結ぶ線分の中点でもあります。長軸楕円における最も長い直径です。短軸楕円における最も短い直径です。弦楕円上の2点を結ぶ線分のことです。焦点楕円を定義する2つの特別な点。図中に示された2点が該当します。通径焦点を通り、長軸に対して垂直な直線(線分)のことです。楕円の面積の公式楕円の面積は、長半径 a と短半径 b を使って次の式で表されます。面積 = π × a ×