入力された数字の最小値、最大値、合計を求めるプログラミングですが、このコードでいくつか意味がわからないところがあるので教えてください。
min,max,xの関係です。 if (max < x) max = x;、 if (min > x) min = x; このmax,min,xはどのようになっているのかがわかりません。例えばn = 3
x = 1 ,2 ,3と入力した場合当然最小値は1,最大値は3と表示されますがその時に上のコードはどのように働いているのかを知りたいです。
説明不足かもしれませんがよろしくお願いします。
[code=C]#include <stdio.h>
int main(void){
int n, x, min, max;
long sum;
int i;
scanf("%d", &n);
scanf("%d",&x);
min = max = sum = x;
for (i = 1; i < n; i++) {
scanf("%d", &x);
sum += x;
if (max < x) max = x;
if (min > x) min = x;
}
printf("%d %d %ld\n", min, max, sum);
return 0;
}
[/code]
c
Re: c
もっと適切なタイトルを付けましょう。
「その時点での最大値よりも大きければ、そのxを最大値とする」
「その時点での最小値よりも小さければ、そのxを最小値とする」
という処理を行なっています。
ここで、最初に入力したxを仮の最大値・最小値としています。
2個目以降に入力したxについて、
「その時点での最大値よりも大きければ、そのxを最大値とする」
「その時点での最小値よりも小さければ、そのxを最小値とする」
という処理を行なっています。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: c
解決したのでしたら、「解決チェック」をお願いします。
解決チェックをするには、投稿画面の「送信」の右にある「解決!」にチェックを入れた状態で返信を投稿してください。
解決チェックをするには、投稿画面の「送信」の右にある「解決!」にチェックを入れた状態で返信を投稿してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)