ページ 11

中央値をifで

Posted: 2022年5月20日(金) 23:19
by たくみ
#include <stdio.h>
int main(void)
{
int a, b, c;
/* a, b, c の入力 */
if(a >= b){
if(b >= c) {
printf("(%d, %d, %d)の中央値は %d¥n", a, b, c, b); } else if(a >= c) {
printf("(%d, %d, %d)の中央値は %d¥n", a, b, c, c); } else {
printf("(%d, %d, %d)の中央値は %d¥n", a, b, c, a); }
} else if(/* ......以降,考えてみること */ return 0;

Re: 中央値をifで

Posted: 2022年5月21日(土) 00:01
by みけCAT
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。

コードしか書かれていないようですが、何か質問はありますか?

Re: 中央値をifで

Posted: 2022年5月21日(土) 14:03
by あたっしゅ
東上☆海美☆「
配列に入れて、ソートして、中央の値([ 0 ][ 1 ][ 2 ] の場合は、[ 1 ])を取り出せば、いいのでは ?

Re: 中央値をifで

Posted: 2022年5月21日(土) 15:00
by みけCAT
・共通の出力を行う部分は1個にまとめる
・それぞれの値が中央値になっているかを確認し、中央値になっているものを出力する

コード:

#include <stdio.h>
int main(void)
{
    int a, b, c;
    /* a, b, c の入力 */

    printf("(%d, %d, %d)の中央値は ", a, b, c);
    if ((b <= a && a <= c) || (c <= a && a <= b)) printf("%d", a);
    else if ((a <= b && b <= c) || (c <= b && b <= a)) printf("%d", b);
    else printf("%d", c);
    /* 一般的ではないと思うが、もとのコードを尊重して改行ではなくU+00A5とnを出力する */
    printf("¥n");
    return 0;
}

Re: 中央値をifで

Posted: 2022年5月22日(日) 02:18
by box
データが3つしかないならif文でもよいかもしれませんが、
データがもっと多くなったときや個数が偶数の場合などに
対応することを考えると、別の回答にあるとおり
ソートして求める(関数を作る)のが妥当ではないかと思います。