回答編集履歴

3

typo修正

2021/10/02 08:29

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  で、どこかで引っかかるはずですから最初にどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
84
84
 
85
- (`__LINE__'というマクロがソースコードの行数に置換されると知っていればプローブを
85
+ (`__LINE__`というマクロがソースコードの行数に置換されると知っていればプローブを
86
86
 
87
87
  `if(S[0]->gene==NULL){printf("%d:%d****NULL****\n",__LINE__,i);}`
88
88
 

2

語句修正

2021/10/02 08:29

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  ```
82
82
 
83
- で、どこかで引っかかるはずですからどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
83
+ で、どこかで引っかかるはずですから最初にどこで引っかかったかで発生原因/対策方法を大幅に絞れるはずです。
84
84
 
85
85
  (`__LINE__'というマクロがソースコードの行数に置換されると知っていればプローブを
86
86
 

1

修正

2021/10/02 08:27

投稿

thkana
thkana

スコア7703

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