複数の入力した整数値から最大・最小値の求め方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
TAMO

複数の入力した整数値から最大・最小値の求め方

#1

投稿記事 by TAMO » 3年前

複数の入力した整数値から最大・最小値の求め方を教えていただけますか?
こちらを書いたのですが、うまく動きません。

コード:

#include <stdio.h>

int main(void) {
int data, max, min;

scanf("%d", &max);
scanf("%d", &min);

for(; scanf("%d", &data)==1;) {
if (data > max) max = data;
if (data < min) min = data;
}

printf("%d\n", max);
printf("%d\n", min);

return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 複数の入力した整数値から最大・最小値の求め方

#2

投稿記事 by みけCAT » 3年前

maxとminは個別の入力値ではなく、最初に入力した値に初期化するといいでしょう。

コード:

#include <stdio.h>

int main(void) {
	int data, max = 0, min = 0, is_first = 1;

	for(; scanf("%d", &data)==1;) {
		if (is_first || data > max) max = data;
		if (is_first || data < min) min = data;
		is_first = 0;
	}

	if (is_first) {
		puts("no input");
	} else {
		printf("%d\n", max);
		printf("%d\n", min);
	}

	return 0;
}
こうしてもいいです。

コード:

#include <stdio.h>

int main(void) {
	int data, max, min;

	if (scanf("%d", &max) != 1) {
		puts("no input");
		return 0;
	}
	min = max;

	for(; scanf("%d", &data)==1;) {
		if (data > max) max = data;
		if (data < min) min = data;
	}

	printf("%d\n", max);
	printf("%d\n", min);

	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る