回答編集履歴

5

typo

2016/02/16 15:42

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  ```
34
34
 
35
- win1はchar*の配列です。「型」の配列は「型*」でもありますね。 従って、`win1はchar* *`でもあるので、win_list[0]へ設定できるのです。
35
+ win1は`char*`の配列です。そして「型」の配列は「型*」でもありますね。 従って、win1は`char* *`でもあるので、win_list[0]へ設定できるのです。
36
36
 
37
37
 
38
38
 

4

変数名変更

2016/02/16 15:42

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -20,19 +20,19 @@
20
20
 
21
21
  ```C
22
22
 
23
- char* lot1[]={"223692", NULL};
23
+ char* win1[]={"223692", NULL};
24
24
 
25
- char* lot2[]={"141421", "314159", NULL};
25
+ char* win2[]={"141421", "314159", NULL};
26
26
 
27
27
  :
28
28
 
29
- char* lot6[]={"03", "92", NULL};
29
+ char* win6[]={"03", "92", NULL};
30
30
 
31
- char **win_list[LOT_GNUM]={lot1, lot2, ..., lot6};
31
+ char **win_list[LOT_GNUM]={win1, win2, ..., win6};
32
32
 
33
33
  ```
34
34
 
35
- lot1はchar*の配列です。「型」の配列は「型*」でもありますね。 従って、`lot1はchar* *`でもあるので、win_list[0]へ設定できるのです。
35
+ win1はchar*の配列です。「型」の配列は「型*」でもありますね。 従って、`win1はchar* *`でもあるので、win_list[0]へ設定できるのです。
36
36
 
37
37
 
38
38
 

3

大変更

2016/02/16 14:00

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -2,76 +2,38 @@
2
2
 
3
3
 
4
4
 
5
- なるほど、なかなか歯ごたえが有る問題ですね
5
+ すいません。問題見てきました。大外れしたので、全面的に回答を変更させて下さい(古い回答は忘れて欲しい...)
6
6
 
7
7
 
8
8
 
9
- `char *`は良く文字列へのポインタで使われます。check_lot()への渡し方から、恐らく文字列へのポインタとして使いると思います。
9
+ `char *`は良く文字列へのポインタで使われます。問題でも文字列へのポインタとして使われてます
10
10
 
11
- 次に、型*は、「型」へのポインタ、もしくは、「型」の配列として使われます。check_lot()への渡し方などから「型」の配列と思います。
11
+ 次に、型*は、「型」へのポインタ、もしくは、「型」の配列として使われます。「型」へのポインタはC言語の仕様から「型」の配列へのポインタしても使えます。問題文より「型」の配列へのポインタですね。
12
+
13
+ つまり、「「文字列へのポインタ=`char*`」の配列へのポインタ=`char* *`」の配列=`char* * []`になってます。
12
14
 
13
15
 
14
16
 
15
- 従って、`char **win_list[LOT_GNUM]`、「`char*`(=字列へポインタ)」の配列の配列り2次元配列で
17
+ 構造問題に記載されている具体的な定義方法を記述してみます。
16
18
 
19
+ (コンパイル確認してないので、エラーがでたらごめんなさい。)
20
+
17
- ということは、
21
+ ```C
22
+
23
+ char* lot1[]={"223692", NULL};
24
+
25
+ char* lot2[]={"141421", "314159", NULL};
26
+
27
+ :
28
+
29
+ char* lot6[]={"03", "92", NULL};
30
+
31
+ char **win_list[LOT_GNUM]={lot1, lot2, ..., lot6};
32
+
33
+ ```
34
+
35
+ lot1はchar*の配列です。「型」の配列は「型*」でもありますね。 従って、`lot1はchar* *`でもあるので、win_list[0]へ設定できるのです。
18
36
 
19
37
 
20
38
 
21
- ```C
22
-
23
- char* win_list[][LOT_GNUM]=
24
-
25
- {
26
-
27
- {"foo0", "foo1", "foo2", ... "foo(LOT_GNUM-1)"},
28
-
29
- :
30
-
31
- {NULL}
32
-
33
- };
34
-
35
- ```
36
-
37
- 的に定義すれば渡せと思いますよ
39
+ なかなか歯ごたえが有問題でしたorz
38
-
39
-
40
-
41
- ---
42
-
43
- 【追記】
44
-
45
- あ、`char **win_list[LOT_GNUM]`, `for (i = 0; i < LOT_GNUM; i++)`なのに、` win_list[i][k]`ってことは、`char* win_list[LOT_GNUM][LOT_GNUM];`ですね。
46
-
47
- しかも、`for (k = 0; win_list[i][k] != NULL; k++)`ってことは最後はNULLにしておく必要が有りますね。
48
-
49
- ですので、訂正です。
50
-
51
- ```C
52
-
53
- char* win_list[LOT_GNUM][LOT_GNUM]=
54
-
55
- {
56
-
57
- {"foo00", "foo01", "foo02", ..., "foo0n", NULL},
58
-
59
- {"foo10", "foo11", "foo12", ..., "foo1n", NULL},
60
-
61
- :
62
-
63
- {"foom0", "foom1", "foom2", ..., "foomn", NULL}
64
-
65
- };
66
-
67
- ```
68
-
69
- n=LOT_GNUM-2
70
-
71
- m=LOT_GNUM-1
72
-
73
- です。
74
-
75
-
76
-
77
- 難しすぎる印象です。なにか引っ掛けにハマっているかも。>自分

2

追加

2016/02/16 13:56

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -28,8 +28,50 @@
28
28
 
29
29
  :
30
30
 
31
+ {NULL}
32
+
31
33
  };
32
34
 
33
35
  ```
34
36
 
35
37
  的に定義すれば渡せると思いますよ。
38
+
39
+
40
+
41
+ ---
42
+
43
+ 【追記】
44
+
45
+ あ、`char **win_list[LOT_GNUM]`, `for (i = 0; i < LOT_GNUM; i++)`なのに、` win_list[i][k]`ってことは、`char* win_list[LOT_GNUM][LOT_GNUM];`ですね。
46
+
47
+ しかも、`for (k = 0; win_list[i][k] != NULL; k++)`ってことは最後はNULLにしておく必要が有りますね。
48
+
49
+ ですので、訂正です。
50
+
51
+ ```C
52
+
53
+ char* win_list[LOT_GNUM][LOT_GNUM]=
54
+
55
+ {
56
+
57
+ {"foo00", "foo01", "foo02", ..., "foo0n", NULL},
58
+
59
+ {"foo10", "foo11", "foo12", ..., "foo1n", NULL},
60
+
61
+ :
62
+
63
+ {"foom0", "foom1", "foom2", ..., "foomn", NULL}
64
+
65
+ };
66
+
67
+ ```
68
+
69
+ n=LOT_GNUM-2
70
+
71
+ m=LOT_GNUM-1
72
+
73
+ です。
74
+
75
+
76
+
77
+ 難しすぎる印象です。なにか引っ掛けにハマっているかも。>自分

1

微修正

2016/02/16 13:14

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- 従って、`char **win_list[LOT_GNUM]`は、`char*`=文字列へのポインタの配列の配列、つまり2次元配列ですね。
15
+ 従って、`char **win_list[LOT_GNUM]`は、`char*`(=文字列へのポインタ)」の配列の配列、つまり2次元配列ですね。
16
16
 
17
17
  ということは、
18
18