質問するログイン新規登録

回答編集履歴

3

修正

2018/07/28 00:21

投稿

asm
asm

スコア15149

answer CHANGED
@@ -50,7 +50,10 @@
50
50
  ```
51
51
  となります。
52
52
 
53
+ 計算順序の問題で
53
- 計算順序の問題で`i`が1以降s[0]が1となっている事が見えます。
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

修正

2018/07/28 00:20

投稿

asm
asm

スコア15149

answer CHANGED
@@ -23,37 +23,37 @@
23
23
 
24
24
  int main(void)
25
25
  {
26
- int a[3] = {3, 6, 9};
26
+ int s[3] = {3, 6, 9};
27
27
  for(int i = 0; i < 3; i++){
28
- printf("a[%d]\t= a[%d] / a[0]\n", i, i);
28
+ printf("s[%d]\t= s[%d] / s[0]\n", i, i);
29
- printf("\t= %d / %d\n", a[i], a[0]);
29
+ printf("\t= %d / %d\n", s[i], s[0]);
30
- printf("\t= %d\n", a[i] / a[0]);
30
+ printf("\t= %d\n", s[i] / s[0]);
31
- a[i] /= a[0];
31
+ s[i] /= s[0];
32
32
  }
33
33
  return 0;
34
34
  }
35
35
  ```
36
36
 
37
- 配列aaの先頭要素で割るという単純なプログラムです。
37
+ 配列ssの先頭要素で割るという単純なプログラムです。
38
38
  実行結果は
39
39
 
40
40
  ```
41
- a[0]= a[0] / a[0]
41
+ s[0]= s[0] / s[0]
42
42
  = 3 / 3
43
43
  = 1
44
- a[1]= a[1] / a[0]
44
+ s[1]= s[1] / s[0]
45
45
  = 6 / 1
46
46
  = 6
47
- a[2]= a[2] / a[0]
47
+ s[2]= s[2] / s[0]
48
48
  = 9 / 1
49
49
  = 9
50
50
  ```
51
51
  となります。
52
52
 
53
- 順序の問題で`i`が1以降a[0]が1となっている事が見えます。
53
+ 計算順序の問題で`i`が1以降s[0]が1となっている事が見えます。
54
54
 
55
- - a[0]を退避するか
55
+ - s[0]を退避するか
56
- - a[0]/=a[0]を最後に計算するか
56
+ - s[0]/=s[0]を最後に計算するか
57
57
  - 答え領域bを作るか
58
58
 
59
59
  この辺が回避策になりますね

1

追記

2018/07/28 00:17

投稿

asm
asm

スコア15149

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
+ この辺が回避策になりますね