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

回答編集履歴

3

typo修正

2021/10/02 08:29

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -40,6 +40,6 @@
40
40
  //遺伝子確認2
41
41
  ```
42
42
  で、どこかで引っかかるはずですから最初にどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
43
- (`__LINE__'というマクロがソースコードの行数に置換されると知っていればプローブを
43
+ (`__LINE__`というマクロがソースコードの行数に置換されると知っていればプローブを
44
44
  `if(S[0]->gene==NULL){printf("%d:%d****NULL****\n",__LINE__,i);}`
45
45
  とすることで入れたり外したりしてもID?の編集をしなくてもよい、なんて小技はありますが)

2

語句修正

2021/10/02 08:29

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -39,7 +39,7 @@
39
39
  if(S[0]->gene==NULL){printf("5:%d****NULL****\n",i);}
40
40
  //遺伝子確認2
41
41
  ```
42
- で、どこかで引っかかるはずですからどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
42
+ で、どこかで引っかかるはずですから最初にどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
43
43
  (`__LINE__'というマクロがソースコードの行数に置換されると知っていればプローブを
44
44
  `if(S[0]->gene==NULL){printf("%d:%d****NULL****\n",__LINE__,i);}`
45
45
  とすることで入れたり外したりしてもID?の編集をしなくてもよい、なんて小技はありますが)

1

修正

2021/10/02 08:27

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -1,9 +1,13 @@
1
+ (なんか変なのが送られてしまった...修正。)
2
+
1
3
  ソースを眺めた範囲では「これはダメ」に気が付きませんでしたが。
4
+ 「歴史的」な引数の宣言をしておいてC99以降の可変長配列使っている辺り妙な感じは否めませんがそれはともかく。
5
+
2
6
  > 自分では解決方法がわからない
3
7
 
4
- それはちょっと甘いかなぁ...極論、その症状が100%出るのなら、
8
+ それはちょっと甘いかなぁ...その症状が100%出るのなら、
5
- `if(S[0]->gene==NULL){printf("****NULL****\n");}`
9
+ `if(S[0]->gene==NULL){printf("N:%d****NULL****\n",i);}`
6
- を随所に挟んで
10
+ のような"プローブ"を随所に挟んで
7
11
  ```C
8
12
  //n個の個体確保
9
13
  for(i = 0; i < n; i++) {
@@ -12,16 +16,17 @@
12
16
 
13
17
  s[i]->gene = (char *)malloc(sizeof(char)*l* 32);
14
18
  if(s[i]->gene == NULL) printf("malloc failure for s[i]->gene");
15
-
19
+ if(S[0]->gene==NULL){printf("0:%d****NULL****\n",i);}
16
20
  //初期世帯生成
17
21
  make_household_list(household_list, l);
18
-
22
+ if(S[0]->gene==NULL){printf("1:%d****NULL****\n",i);}
19
23
  for(j = 0; j < l* 32; j++) {
20
24
  s[i]->gene[j] = household_list[j];
21
25
  }
22
-
26
+ if(S[0]->gene==NULL){printf("2:%d****NULL****\n",i);}
23
27
  //適応度計算
24
28
  s[i]->fitness = fitness_all(i, s[i]->gene, l);
29
+ if(S[0]->gene==NULL){printf("3:%d****NULL****\n",i);}
25
30
  s[i]->length = l;
26
31
 
27
32
  //遺伝子確認1
@@ -29,5 +34,12 @@
29
34
  printf("%d,",s[i]->gene[j]);
30
35
  }
31
36
  printf("\n");
32
-
37
+ if(S[0]->gene==NULL){printf("4:%d****NULL****\n",i);}
33
- }
38
+ }
39
+ if(S[0]->gene==NULL){printf("5:%d****NULL****\n",i);}
40
+ //遺伝子確認2
41
+ ```
42
+ で、どこかで引っかかるはずですからどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
43
+ (`__LINE__'というマクロがソースコードの行数に置換されると知っていればプローブを
44
+ `if(S[0]->gene==NULL){printf("%d:%d****NULL****\n",__LINE__,i);}`
45
+ とすることで入れたり外したりしてもID?の編集をしなくてもよい、なんて小技はありますが)