- ベストアンサー
中央値をもとめる
このプログラムだとたとえば 1、100、99を入力したときに間違った値を出します。どうすればいいでしょうか?おねがいします。 #include <stdio.h> int main(void) { int a, b, c, m; int max; printf("1個目の数値:"); scanf("%d", &a); printf("2個目の数値:"); scanf("%d", &b); printf("3個目の数値:"); scanf("%d", &c); max = a; if(max < b) max = b; if(max <= c) m = max; printf("%d, %d, %d の中央値は%dです。\n", a, b, c, m); }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あまり自信はありませんが、以下のような感じではいかがでしょうか。 int main(void) { int num[3][2]; int max, i, j; /* 配列初期化 */ memset(&num[0][0], 0, sizeof(num)); /* 数値入力 */ for(i = 0; i < 3; i ++) { printf("%d個目の数値:",i+1); scanf("%d", &num[i][0]); } /* 数値の大きい順番に順位をつける */ for(i = 0; i < 3; i ++) { num[i][1] = 1; for(j = 0; j < 3; j ++) { if((i != j) && (num[i][0] < num[j][0])) { num[i][1] ++; } } } /* 中央値算出 */ max = 0; for(i = 0; i < 3; i++) { if(num[i][1] == 2) { max = num[i][0]; } } printf("%d, %d, %d の中央値は%dです。\n", num[0][0], num[1][0], num[2][0], max); }