回答編集履歴
1
追記
test
CHANGED
@@ -31,3 +31,40 @@
|
|
31
31
|
return 0;
|
32
32
|
}
|
33
33
|
```
|
34
|
+
|
35
|
+
---
|
36
|
+
|
37
|
+
[追記]
|
38
|
+
上記と異なる方針:
|
39
|
+
|
40
|
+
* 入力値を一旦配列に全部格納してから処理する
|
41
|
+
* 「足すべきものだけを足す」という方向で集計処理を行う
|
42
|
+
|
43
|
+
という場合,
|
44
|
+
最小値/最大値 そのものではなくて「配列の何番目の要素が 最小/最大 なのか」という情報を扱うようにすると,最後の集計処理の話が簡単になるかもしれません.
|
45
|
+
|
46
|
+
```C
|
47
|
+
int main( void )
|
48
|
+
{
|
49
|
+
//※str[]への入力部分は本質でないので省略
|
50
|
+
int str[5] = { 1,1,3,5,5 };
|
51
|
+
|
52
|
+
//iMin, iMax は 最小/最大 な要素のindex.
|
53
|
+
//すなわち,最小値は str[iMin], 最大値は str[iMax]
|
54
|
+
int iMin=0, iMax=0;
|
55
|
+
for( int i=1; i<5; ++i )
|
56
|
+
{
|
57
|
+
if( str[i] < str[iMin] ){ iMin = i; }
|
58
|
+
if( str[i] > str[iMax] ){ iMax = i; }
|
59
|
+
}
|
60
|
+
|
61
|
+
//集計:ここがこんな感じで楽になる
|
62
|
+
int Sum = 0;
|
63
|
+
for( int i=0; i<5; ++i )
|
64
|
+
{//最小でも最大でもない要素の値だけを足していく
|
65
|
+
if( i!=iMin && i!=iMax ){ Sum += str[i]; }
|
66
|
+
}
|
67
|
+
printf( "%d\n", Sum );
|
68
|
+
return 0;
|
69
|
+
}
|
70
|
+
```
|