0

特定の販売額を入力し、3 つの料金プランに基づいて計算を行うプログラムを作成しようとしています。私が取り入れたいことの 1 つは、3 つの計画の中央値を把握する方法です。したがって、plan1 = 200、plan2 = 250、および plan3 = 300 の場合、中央値が 250 であることをコンピューターに認識させたいと思います。

4

3 に答える 3

3
int ra[3] = { plan1, plan2, plan3 };
std::sort(ra, ra+3);
return ra[1];

おそらくもっと効率的に行うことができます-本当に運が良ければ、コンパイラー最適化してくれるかもしれません。

より効率的である必要があるコードは、おそらく長くなります。次に例を示します。

if (plan1 < plan2) {
    if (plan2 < plan3) return plan2;
    // plan2 is the biggest
    return max(plan1, plan3);
} else {
    if (plan1 < plan3) return plan1;
    // plan1 is the biggest
    return max(plan2, plan3);
}

別の可能性:

void order(int &first, int &second) {
    if (second < first) std::swap(first, second);
}

order(plan1, plan2);
order(plan2, plan3);
order(plan1, plan2);
return plan2;
于 2013-09-24T22:04:13.110 に答える
0
int median(int plan1, int plan2, int plan3) {
  if (plan1 <= plan2 && plan1 >= plan3 || plan1 <= plan3 && plan1 >= plan2) return plan1;
  if (plan2 <= plan1 && plan2 >= plan3 || plan2 <= plan3 && plan2 >= plan1) return plan2;
  return plan3;
}
于 2013-09-24T22:11:09.950 に答える