if文を使って判定するには? – プログラミング – Home

if文を使って判定するには?
 
通知
すべてクリア

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


大学生
 大学生
(@大学生)
ゲスト
結合: 25年前
投稿: 1
Topic starter  

#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つ表示するには」
を考えたのですが、これを実行するとうまくいかないんです
どこがおかしいのかアドバイスください


引用解決済
トピックタグ
つきねこ
 つきねこ
(@つきねこ)
ゲスト
結合: 25年前
投稿: 3
 

ifが入れ子になってないので、表示が2回されちゃいますよ。
コードを提示するのは簡単なので、ifブロックを1つにまとめてみては、
ということでおわっておきます。


返信引用
YellowSheep
 YellowSheep
(@YellowSheep)
ゲスト
結合: 25年前
投稿: 2
 

3つの変数をすべて比較してから、出力したほうがいいのでは?

提示されたソースでは

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

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

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

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


返信引用
こういち
 こういち
(@こういち)
ゲスト
結合: 25年前
投稿: 2
 

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

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


返信引用
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 25年前
投稿: 76
 

int max = __max( i, __max( j,k ) );
これでmaxに最大値が入ります。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました