回答編集履歴

6

文言修正

2020/08/29 08:08

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
  printf("b(%d) = %f\n", i, b[i]);
62
62
 
63
- // 各行の合計ならここでaiをN要素後ろにずらすのでは?
63
+ // 各行の合計ならここでaiをN要素後ろにずらす(ai += N;)のでは?
64
64
 
65
65
  }
66
66
 

5

文言修正

2020/08/29 08:07

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- - 問題点3:`bmaxno`,`bmax`を`0`初期化している。
71
+ - 問題点3:`bmax`を`0`初期化している。
72
72
 
73
73
  すべて0未満の数を入力された場合、合計値が最大値の列を正しく求められない。
74
74
 

4

指摘追加

2020/08/29 08:05

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -65,3 +65,29 @@
65
65
  }
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ - 問題点3:`bmaxno`,`bmax`を`0`初期化している。
72
+
73
+ すべて0未満の数を入力された場合、合計値が最大値の列を正しく求められない。
74
+
75
+ `b[0]`の値を`bmax`に格納しておかないと正しく比較できません。
76
+
77
+ ```C
78
+
79
+ // ここでbmax = b[0];としておくべき。
80
+
81
+ for (i = 0; i < N; i++) {
82
+
83
+ if (bmax < b[i]) {
84
+
85
+ bmax = b[i];
86
+
87
+ bmaxno = i;
88
+
89
+ }
90
+
91
+ }
92
+
93
+ ```

3

指摘追加

2020/08/29 08:04

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  }
18
18
 
19
- ai += N; // ここでaiをN要素後ろに変更しています
19
+ ai += N; // ここでaiをN要素後ろにずらしています
20
20
 
21
21
  }
22
22
 
@@ -38,9 +38,11 @@
38
38
 
39
39
  ```
40
40
 
41
- - 問題点2:`b`に領域を確保だけして0初期化していない。
41
+ - 問題点2:`b`に領域を確保だけして0初期化していない。`ai`が指す位置をずらしていない。
42
42
 
43
43
  `for (j = 0; j < N; j++) {`の前で`b[i] = 0;`とでもして0初期化してください。
44
+
45
+ 各行の合計なら`for (i = 0; i < N; i++) {`の最後で`ai`が指す位置をN要素後ろにずらしてください。
44
46
 
45
47
  ```C
46
48
 
@@ -58,6 +60,8 @@
58
60
 
59
61
  printf("b(%d) = %f\n", i, b[i]);
60
62
 
63
+ // 各行の合計ならここでaiをN要素後ろにずらすのでは?
64
+
61
65
  }
62
66
 
63
67
  ```

2

指摘追加

2020/08/29 07:58

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -40,6 +40,8 @@
40
40
 
41
41
  - 問題点2:`b`に領域を確保だけして0初期化していない。
42
42
 
43
+ `for (j = 0; j < N; j++) {`の前で`b[i] = 0;`とでもして0初期化してください。
44
+
43
45
  ```C
44
46
 
45
47
  b = (double*)malloc(N * sizeof(double));

1

指摘追加

2020/08/29 07:54

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,3 +1,7 @@
1
+ - 問題点1:`ai`が範囲外を指している。
2
+
3
+ 二度目の`for`の前に`ai = A;`で`ai`が正しい位置を指すようにしてください。
4
+
1
5
  ```C
2
6
 
3
7
  ai = A;
@@ -32,6 +36,26 @@
32
36
 
33
37
  }
34
38
 
39
+ ```
35
40
 
41
+ - 問題点2:`b`に領域を確保だけして0初期化していない。
42
+
43
+ ```C
44
+
45
+ b = (double*)malloc(N * sizeof(double));
46
+
47
+ //中略
48
+
49
+ for (i = 0; i < N; i++) {
50
+
51
+ for (j = 0; j < N; j++) {
52
+
53
+ b[i] += ai[j]; // bの内容を0初期化していないため不定値
54
+
55
+ }
56
+
57
+ printf("b(%d) = %f\n", i, b[i]);
58
+
59
+ }
36
60
 
37
61
  ```