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

回答編集履歴

6

文言修正

2020/08/29 08:08

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -29,7 +29,7 @@
29
29
  b[i] += ai[j]; // bの内容を0初期化していないため不定値
30
30
  }
31
31
  printf("b(%d) = %f\n", i, b[i]);
32
- // 各行の合計ならここでaiをN要素後ろにずらすのでは?
32
+ // 各行の合計ならここでaiをN要素後ろにずらす(ai += N;)のでは?
33
33
  }
34
34
  ```
35
35
 

5

文言修正

2020/08/29 08:07

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -33,7 +33,7 @@
33
33
  }
34
34
  ```
35
35
 
36
- - 問題点3:`bmaxno`,`bmax`を`0`初期化している。
36
+ - 問題点3:`bmax`を`0`初期化している。
37
37
  すべて0未満の数を入力された場合、合計値が最大値の列を正しく求められない。
38
38
  `b[0]`の値を`bmax`に格納しておかないと正しく比較できません。
39
39
  ```C

4

指摘追加

2020/08/29 08:05

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -31,4 +31,17 @@
31
31
  printf("b(%d) = %f\n", i, b[i]);
32
32
  // 各行の合計ならここでaiをN要素後ろにずらすのでは?
33
33
  }
34
+ ```
35
+
36
+ - 問題点3:`bmaxno`,`bmax`を`0`初期化している。
37
+ すべて0未満の数を入力された場合、合計値が最大値の列を正しく求められない。
38
+ `b[0]`の値を`bmax`に格納しておかないと正しく比較できません。
39
+ ```C
40
+ // ここでbmax = b[0];としておくべき。
41
+ for (i = 0; i < N; i++) {
42
+ if (bmax < b[i]) {
43
+ bmax = b[i];
44
+ bmaxno = i;
45
+ }
46
+ }
34
47
  ```

3

指摘追加

2020/08/29 08:04

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  printf("A[%d][%d] = ", i, j);
8
8
  scanf("%lf", &ai[j]);
9
9
  }
10
- ai += N; // ここでaiをN要素後ろに変更しています
10
+ ai += N; // ここでaiをN要素後ろにずらしています
11
11
  }
12
12
 
13
13
  //ここでaiはA[N*N]をさしています。
@@ -18,8 +18,9 @@
18
18
  printf("b(%d) = %f\n", i, b[i]);
19
19
  }
20
20
  ```
21
- - 問題点2:`b`に領域を確保だけして0初期化していない。
21
+ - 問題点2:`b`に領域を確保だけして0初期化していない。`ai`が指す位置をずらしていない。
22
22
  `for (j = 0; j < N; j++) {`の前で`b[i] = 0;`とでもして0初期化してください。
23
+ 各行の合計なら`for (i = 0; i < N; i++) {`の最後で`ai`が指す位置をN要素後ろにずらしてください。
23
24
  ```C
24
25
  b = (double*)malloc(N * sizeof(double));
25
26
  //中略
@@ -28,5 +29,6 @@
28
29
  b[i] += ai[j]; // bの内容を0初期化していないため不定値
29
30
  }
30
31
  printf("b(%d) = %f\n", i, b[i]);
32
+ // 各行の合計ならここでaiをN要素後ろにずらすのでは?
31
33
  }
32
34
  ```

2

指摘追加

2020/08/29 07:58

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -19,6 +19,7 @@
19
19
  }
20
20
  ```
21
21
  - 問題点2:`b`に領域を確保だけして0初期化していない。
22
+ `for (j = 0; j < N; j++) {`の前で`b[i] = 0;`とでもして0初期化してください。
22
23
  ```C
23
24
  b = (double*)malloc(N * sizeof(double));
24
25
  //中略

1

指摘追加

2020/08/29 07:54

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,3 +1,5 @@
1
+ - 問題点1:`ai`が範囲外を指している。
2
+ 二度目の`for`の前に`ai = A;`で`ai`が正しい位置を指すようにしてください。
1
3
  ```C
2
4
  ai = A;
3
5
  for (i = 0; i < N; i++) {
@@ -15,5 +17,15 @@
15
17
  }
16
18
  printf("b(%d) = %f\n", i, b[i]);
17
19
  }
18
-
20
+ ```
21
+ - 問題点2:`b`に領域を確保だけして0初期化していない。
22
+ ```C
23
+ b = (double*)malloc(N * sizeof(double));
24
+ //中略
25
+ for (i = 0; i < N; i++) {
26
+ for (j = 0; j < N; j++) {
27
+ b[i] += ai[j]; // bの内容を0初期化していないため不定値
28
+ }
29
+ printf("b(%d) = %f\n", i, b[i]);
30
+ }
19
31
  ```