if文を使って判定するには?

[戻る]
大学生 2000/11/06(月) 18:41:16
#include<stdio.h>
main()
{
    int i,j,k ;
    printf("i : ");
    scanf("%d" , &i);
    printf("j : ");
    scanf("%d" , &j);
    printf("k : ");
    scanf("%d" , &k);
    if(i<j)
    {
        printf("%d \n" ,  j );
    }
    else
    {
               printf("%d \n" ,  i );
    }
    if(i<k)
    {
        printf("%d \n" ,  k );
    }
    else
    {
        printf("%d \n" ,  i );
    }
}

条件「入力 i,j,kの整数で、出力i,j,kうち最大の数を1つ表示するには」
を考えたのですが、これを実行するとうまくいかないんです
どこがおかしいのかアドバイスください

つきねこ [E-Mail] 2000/11/07(火) 13:10:11
ifが入れ子になってないので、表示が2回されちゃいますよ。
コードを提示するのは簡単なので、ifブロックを1つにまとめてみては、
ということでおわっておきます。

YellowSheep 2000/11/07(火) 14:22:52
3つの変数をすべて比較してから、出力したほうがいいのでは?

提示されたソースでは

「i」と「j」を比較して
「i」が「j」より小さい時「j」を出力
それ以外は「i」を出力

「i」と「k」を比較して
「i」が「k」より小さい時「k」を出力
それ以外は「i」を出力

てな具合に解釈されます。

もし i > j > k の場合には
「i」が2回出力されることになりますよ。

こういち 2000/12/01(金) 00:19:45
とりあえず、iを最大と仮定してみます。(maxなどという変数を作りmax = iとする)
次に、maxとjを比較し、jの方が大きければmaxにjを代入します。
kに関してもjと同様にします。
最後にmaxを出力すれば、これが最大値になります。

この方法でやると最大値を求めるものがいくつになっても大丈夫で、n個の最大値を
求めるのには、O(n)なので、時間もかかりません。

EIJI 2000/12/05(火) 11:59:05
int max = __max( i, __max( j,k ) );
これでmaxに最大値が入ります。

古いスレッドには追加発言できません。