回答編集履歴
3
修正
answer
CHANGED
@@ -50,7 +50,10 @@
|
|
50
50
|
```
|
51
51
|
となります。
|
52
52
|
|
53
|
+
計算順序の問題で
|
53
|
-
|
54
|
+
i = 0の時: s[0] が3から1に変化
|
55
|
+
i = 1の時: s[0] は1
|
56
|
+
となってしまっています
|
54
57
|
|
55
58
|
- s[0]を退避するか
|
56
59
|
- s[0]/=s[0]を最後に計算するか
|
2
修正
answer
CHANGED
@@ -23,37 +23,37 @@
|
|
23
23
|
|
24
24
|
int main(void)
|
25
25
|
{
|
26
|
-
int
|
26
|
+
int s[3] = {3, 6, 9};
|
27
27
|
for(int i = 0; i < 3; i++){
|
28
|
-
printf("
|
28
|
+
printf("s[%d]\t= s[%d] / s[0]\n", i, i);
|
29
|
-
printf("\t= %d / %d\n",
|
29
|
+
printf("\t= %d / %d\n", s[i], s[0]);
|
30
|
-
printf("\t= %d\n",
|
30
|
+
printf("\t= %d\n", s[i] / s[0]);
|
31
|
-
|
31
|
+
s[i] /= s[0];
|
32
32
|
}
|
33
33
|
return 0;
|
34
34
|
}
|
35
35
|
```
|
36
36
|
|
37
|
-
配列
|
37
|
+
配列sをsの先頭要素で割るという単純なプログラムです。
|
38
38
|
実行結果は
|
39
39
|
|
40
40
|
```
|
41
|
-
|
41
|
+
s[0]= s[0] / s[0]
|
42
42
|
= 3 / 3
|
43
43
|
= 1
|
44
|
-
|
44
|
+
s[1]= s[1] / s[0]
|
45
45
|
= 6 / 1
|
46
46
|
= 6
|
47
|
-
|
47
|
+
s[2]= s[2] / s[0]
|
48
48
|
= 9 / 1
|
49
49
|
= 9
|
50
50
|
```
|
51
51
|
となります。
|
52
52
|
|
53
|
-
順序の問題で`i`が1以降
|
53
|
+
計算順序の問題で`i`が1以降s[0]が1となっている事が見えます。
|
54
54
|
|
55
|
-
-
|
55
|
+
- s[0]を退避するか
|
56
|
-
-
|
56
|
+
- s[0]/=s[0]を最後に計算するか
|
57
57
|
- 答え領域bを作るか
|
58
58
|
|
59
59
|
この辺が回避策になりますね
|
1
追記
answer
CHANGED
@@ -11,4 +11,49 @@
|
|
11
11
|
float d = a[1][0] / a[0][0];
|
12
12
|
```
|
13
13
|
|
14
|
-
と正しい計算結果が得られます。
|
14
|
+
と正しい計算結果が得られます。
|
15
|
+
|
16
|
+
---
|
17
|
+
**追記**
|
18
|
+
|
19
|
+
問題を単純化します。
|
20
|
+
|
21
|
+
```c
|
22
|
+
#include <stdio.h>
|
23
|
+
|
24
|
+
int main(void)
|
25
|
+
{
|
26
|
+
int a[3] = {3, 6, 9};
|
27
|
+
for(int i = 0; i < 3; i++){
|
28
|
+
printf("a[%d]\t= a[%d] / a[0]\n", i, i);
|
29
|
+
printf("\t= %d / %d\n", a[i], a[0]);
|
30
|
+
printf("\t= %d\n", a[i] / a[0]);
|
31
|
+
a[i] /= a[0];
|
32
|
+
}
|
33
|
+
return 0;
|
34
|
+
}
|
35
|
+
```
|
36
|
+
|
37
|
+
配列aをaの先頭要素で割るという単純なプログラムです。
|
38
|
+
実行結果は
|
39
|
+
|
40
|
+
```
|
41
|
+
a[0]= a[0] / a[0]
|
42
|
+
= 3 / 3
|
43
|
+
= 1
|
44
|
+
a[1]= a[1] / a[0]
|
45
|
+
= 6 / 1
|
46
|
+
= 6
|
47
|
+
a[2]= a[2] / a[0]
|
48
|
+
= 9 / 1
|
49
|
+
= 9
|
50
|
+
```
|
51
|
+
となります。
|
52
|
+
|
53
|
+
順序の問題で`i`が1以降a[0]が1となっている事が見えます。
|
54
|
+
|
55
|
+
- a[0]を退避するか
|
56
|
+
- a[0]/=a[0]を最後に計算するか
|
57
|
+
- 答え領域bを作るか
|
58
|
+
|
59
|
+
この辺が回避策になりますね
|