C言語関係掲示板

過去ログ

No.271.最小値と最大値の求め方

[戻る] [ホームページ]


No.1624

教えてください
投稿者---yu-ri(2002/05/30 21:59:35)


最小値と最大値を出すやり方が分かりません。どうしたらいいのでしょう?
教えてください。
#include <stdio.h>
main()
{
int x, n, min, max;

n = 0;
while (1){
printf("整数を入力してください => ");
scanf("%d", &x);
if (x <= 0)
break;
n = n+1;
if (x <= x || x > 0)
min = x;
if (x >= x || x > 0)
max = x;
}
if (n > 0){
printf("入力された %d 個の整数の最小値は %d、最大値は %d です。\n", n, min, max);
}
}

これだと間違っているのですが・・・。



No.1625

Re:最小値と最大値の求め方
投稿者---Kaji(2002/05/30 22:34:57)


こんばんわ。

まず冷静に考えて見ましょう。

> if (x <= x || x > 0)
> min = x;
> if (x >= x || x > 0)
> max = x;
> }
最小値・最大値を求めるのに同じ変数同士を比べてもだめです。
xとmin、xとmaxを比較しなければなりません。

処理の流れにも少し問題があると思います。
0より小さい値が入力された時点で終了ということだと思いますが
(仮に0を入力で終了としてください)
これだと0を入力しても何も出力しないで終了ということになります。
break;の前に結果を出力しましょう。
またmin,maxの変数は初期化しておいたほうがいいでしょう。

この手のプログラムはいろいろなサイト・参考書などで
紹介されています。この掲示板の過去ログでも似たような
質問を見たような気がします。
その気になって調べればいくらでも情報は出てくるので
自分でもいろいろ調べてみてください。

また本掲示板の「 Re:C言語の本の紹介」でB.Smithさんも
おっしゃっていますがタイトルはもっと具体的かつ適切なものを
つけましょう。いろいろなところで言われている事ではありますが
このようなタイトルでは後々この掲示板を使う人にも
分かりにくいですし自分も回答を得にくくなると思います。


No.1626

Re:最小値と最大値の求め方
投稿者---Kaji(2002/05/30 23:27:05)


>処理の流れにも少し問題があると思います。
>0より小さい値が入力された時点で終了ということだと思いますが
>(仮に0を入力で終了としてください)
>これだと0を入力しても何も出力しないで終了ということになります。
>break;の前に結果を出力しましょう。
少し勘違いしました。
別に毎回結果を出力してもいいですね。
失礼しました。