回答編集履歴

7

sumについて追記

2020/04/25 06:35

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -91,3 +91,5 @@
91
91
  ```
92
92
 
93
93
  に入れるべきでは?
94
+
95
+ もしくは`sum`も配列にして入力値ごとに持ちましょう。

6

文言修正

2020/04/25 06:35

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  0除算が行われています。
68
68
 
69
- また、入力した数値の約数を調べたいはずなのに、判定したい数の数でループを回してしまっています。
69
+ また、入力した数値の約数を調べたいはずなのに、判定したい数の数でループを回してしまっています。
70
70
 
71
71
 
72
72
 

5

書式変更、sum比較指摘追加

2020/04/25 06:29

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,3 +1,21 @@
1
+ > C99のエラー
2
+
3
+
4
+
5
+ ```
6
+
7
+ kanzensu.c:18: error: ‘for’ loop initial declarations are only allowed in C99 mode
8
+
9
+ kanzensu.c:18: note: use option -std=c99 or -std=gnu99 to compile your code
10
+
11
+ ```
12
+
13
+ メッセージの通り、`for()`で変数宣言したいのであれば、オプションに`-std=c99`か`-std=gnu99`をつけてください。
14
+
15
+
16
+
17
+ ・問題点1
18
+
1
19
  ```C
2
20
 
3
21
  if(number % j == 0)
@@ -14,9 +32,15 @@
14
32
 
15
33
 
16
34
 
35
+ ・問題点2
36
+
17
- それと`sum`が`0`初期化されていません。
37
+ `sum`が`0`初期化されていません。
38
+
39
+ また、2つ目以降の数値の約数も加算されています。
18
40
 
19
41
 
42
+
43
+ ・問題点3
20
44
 
21
45
  `sscanf(str, "%d", number[i]);`
22
46
 
@@ -27,6 +51,8 @@
27
51
  ポインタを渡すべきところに整数を渡しています。
28
52
 
29
53
 
54
+
55
+ ・問題点4
30
56
 
31
57
  ```C
32
58
 
@@ -40,18 +66,28 @@
40
66
 
41
67
  0除算が行われています。
42
68
 
43
-
44
-
45
- > C99エラ
69
+ また、入力した数値約数を調べたいはずなのに、判定したい数の数でルプを回してしまっています。
46
70
 
47
71
 
48
72
 
49
- ```
73
+ ・問題点5
50
74
 
51
- kanzensu.c:18: error: ‘for’ loop initial declarations are only allowed in C99 mode
75
+ ```C
52
76
 
53
- kanzensu.c:18: note: use option -std=c99 or -std=gnu99 to compile your code
77
+ for(int i = 0; i < k; i++) //`再定義エラー?`
78
+
79
+ (略)
54
80
 
55
81
  ```
56
82
 
83
+ `sum`と比較していますが、これではすべての入力数値の約数の和との比較になります。
84
+
85
+ あとでループするのではなく、
86
+
87
+ ```C
88
+
57
- メッセージの通り、`for()`で変数宣言したいのであれば、オプションに`-std=c99``-std=gnu99`をつけてください。
89
+ for(int i = 0; i < k; i++) //`17行`
90
+
91
+ ```
92
+
93
+ に入れるべきでは?

4

C99オプションについて追記

2020/04/25 06:28

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -39,3 +39,19 @@
39
39
  ```
40
40
 
41
41
  0除算が行われています。
42
+
43
+
44
+
45
+ > C99のエラー
46
+
47
+
48
+
49
+ ```
50
+
51
+ kanzensu.c:18: error: ‘for’ loop initial declarations are only allowed in C99 mode
52
+
53
+ kanzensu.c:18: note: use option -std=c99 or -std=gnu99 to compile your code
54
+
55
+ ```
56
+
57
+ メッセージの通り、`for()`で変数宣言したいのであれば、オプションに`-std=c99`か`-std=gnu99`をつけてください。

3

0除算追記

2020/04/25 06:13

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,4 +1,4 @@
1
- ```
1
+ ```C
2
2
 
3
3
  if(number % j == 0)
4
4
 
@@ -15,3 +15,27 @@
15
15
 
16
16
 
17
17
  それと`sum`が`0`初期化されていません。
18
+
19
+
20
+
21
+ `sscanf(str, "%d", number[i]);`
22
+
23
+
24
+
25
+ `sscanf(str, "%d", &number[i]);`
26
+
27
+ ポインタを渡すべきところに整数を渡しています。
28
+
29
+
30
+
31
+ ```C
32
+
33
+ for(int j = 0; j < k; j++) //`23行`
34
+
35
+ {
36
+
37
+ if(number % j == 0)
38
+
39
+ ```
40
+
41
+ 0除算が行われています。

2

0初期化追記

2020/04/25 06:07

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -11,3 +11,7 @@
11
11
  コンパイラも指摘していますがポインタと整数の比較になっています。
12
12
 
13
13
  `number`は`number[i]`ですね。
14
+
15
+
16
+
17
+ それと`sum`が`0`初期化されていません。

1

誤字修正

2020/04/25 06:00

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -8,6 +8,6 @@
8
8
 
9
9
  ```
10
10
 
11
- コンパラも指摘していますがポインタと整数の比較になっています。
11
+ コンパラも指摘していますがポインタと整数の比較になっています。
12
12
 
13
13
  `number`は`number[i]`ですね。