質問編集履歴

8

削除禁止の規約により再掲

2018/05/31 00:15

投稿

s_clalis
s_clalis

スコア17

test CHANGED
File without changes
test CHANGED
@@ -1,49 +1,265 @@
1
- ### 前提・実現したいこと
2
-
3
-
4
-
5
- ここ質問の内く書いください
6
-
7
- (例)PHP(CakePHP)で●●なシステムっています。
8
-
9
- ■■な機能を実装中に以下のエラーメッセージが発生しました。
10
-
11
-
12
-
13
- ### 発生している問題・エラーメッセージ
14
-
15
-
16
-
17
- ```
18
-
19
- エラーメッセージ
20
-
21
- ```
22
-
23
-
24
-
25
- ### 該当のソースコード
26
-
27
-
28
-
29
- ```ここに言語名を入力
30
-
31
- ソースコード
32
-
33
- ```
34
-
35
-
36
-
37
- ### 試したこと
38
-
39
-
40
-
41
- ここに問題に対して試したことを記載してください。
42
-
43
-
44
-
45
- ### 補足情報(FW/ツールのバージョンなど)
46
-
47
-
48
-
49
- ここにより詳細な情報を記載してください。
1
+ ### 前提・実現したいこと
2
+
3
+
4
+
5
+  ファイルから1行ずつデータを`char`型配列読み込み、`int`型に変換してから配列平均を除去・正規化し計算して相関係数を算出するプログラムを作る
6
+
7
+  勉強のためにポインタと動的確保使ってみることと
8
+
9
+
10
+
11
+ ### 発生している問題・エラーメッセージ
12
+
13
+
14
+
15
+  4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。(`data_raw[]`に各4ファイルの階層がありその中の`data_raw[][]`に数値が一行づつ入っている構造)
16
+
17
+  今のところファイルの先頭の行が全ての`data_raw[]`に入ってしまいます。これを`data_raw[][]`に入れたいです。
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+  他の方法を選ぶべきでしたらご教授いただけると幸いです。
26
+
27
+
28
+
29
+ ### 該当のソースコード
30
+
31
+
32
+
33
+ ```C
34
+
35
+ #include "targetver.h"
36
+
37
+
38
+
39
+ #define _CRT_SECURE_NO_WARNINGS
40
+
41
+ #define F_C 4 //file_count
42
+
43
+ #define D_S 85 //data_size
44
+
45
+
46
+
47
+ #include <math.h>
48
+
49
+ #include <stdio.h>
50
+
51
+ #include <stdlib.h>
52
+
53
+ #include <tchar.h>
54
+
55
+
56
+
57
+
58
+
59
+ double in_pro(double v1[], double v2[], int size);
60
+
61
+
62
+
63
+ int main(void)
64
+
65
+ {
66
+
67
+ FILE *fp;
68
+
69
+ int n = 0;
70
+
71
+ int sum[F_C], data[F_C][D_S];
72
+
73
+ char *filename[F_C] = { "rdata1.txt", "rdata2.txt", "rdata3.txt", "rdata4.txt" };
74
+
75
+ char ***data_raw;
76
+
77
+ double u1[] = { 1, 0, 0 };
78
+
79
+ double u2[] = { 0, sqrt(3) / 2, 0.5 };
80
+
81
+ double u3[] = { 0, 0.5, -sqrt(3) / 2 };
82
+
83
+ double xn[] = { 2, -1, 1 };
84
+
85
+ double a[3];
86
+
87
+ double x[6];
88
+
89
+ double g[3];
90
+
91
+
92
+
93
+ data_raw = (char ***)malloc(sizeof(char **) * F_C);
94
+
95
+ for (size_t i = 0; i < F_C; i++)
96
+
97
+ {
98
+
99
+ data_raw[i] = (char **)malloc(sizeof(char *) * D_S);
100
+
101
+ for (size_t j = 0; j < D_S; j++)
102
+
103
+ {
104
+
105
+ data_raw[i][j] = (char *)malloc(sizeof(char) * 0x10);
106
+
107
+ }
108
+
109
+ }
110
+
111
+
112
+
113
+ for (size_t i = 0; i < F_C; i++)
114
+
115
+ {
116
+
117
+ if ((fp = fopen(filename[i], "r")) == NULL)
118
+
119
+ {
120
+
121
+ fprintf(stderr, "Failed to opening %s.\n", filename[i]);
122
+
123
+ exit(EXIT_FAILURE);
124
+
125
+ }
126
+
127
+
128
+
129
+ while (fgets(data_raw[i][n], 0x10, fp) != NULL)
130
+
131
+ {
132
+
133
+ n++;
134
+
135
+ //puts(data_raw[i][n]);
136
+
137
+ }
138
+
139
+ n = 0;
140
+
141
+ }
142
+
143
+
144
+
145
+ for (size_t i = 0; i < F_C; i++)
146
+
147
+ {
148
+
149
+ for (size_t j = 0; j < D_S; j++)
150
+
151
+ {
152
+
153
+ data[i][j] = atoi(data_raw[i][j]);
154
+
155
+ sum[i] += data[i][j];
156
+
157
+ }
158
+
159
+ sum[i] /= D_S;
160
+
161
+ printf("%d\n", sum[i]);
162
+
163
+ }
164
+
165
+
166
+
167
+
168
+
169
+ printf("***\tH30\tDSP1-3\t23\t***\n\n");
170
+
171
+
172
+
173
+ printf("u1:[%f, %f, %f]\n", u1[0], u1[1], u1[2]);
174
+
175
+ printf("u2:[%f, %f, %f]\n", u2[0], u2[1], u2[2]);
176
+
177
+ printf("u3:[%f, %f, %f]\n \n", u3[0], u3[1], u3[2]);
178
+
179
+
180
+
181
+ x[0] = in_pro(u1, u1, 3);
182
+
183
+ x[1] = in_pro(u1, u2, 3);
184
+
185
+ x[2] = in_pro(u1, u3, 3);
186
+
187
+ x[3] = in_pro(u2, u2, 3);
188
+
189
+ x[4] = in_pro(u2, u3, 3);
190
+
191
+ x[5] = in_pro(u3, u3, 3);
192
+
193
+
194
+
195
+ printf("u1 * u1 : %f\n", x[0]);
196
+
197
+ printf("u1 * u2 : %f\n", x[1]);
198
+
199
+ printf("u1 * u3 : %f\n", x[2]);
200
+
201
+ printf("u2 * u2 : %f\n", x[3]);
202
+
203
+ printf("u2 * u3 : %f\n", x[4]);
204
+
205
+ printf("u3 * u3 : %f\n \n", x[5]);
206
+
207
+
208
+
209
+ a[0] = in_pro(xn, u1, 3);
210
+
211
+ a[1] = in_pro(xn, u2, 3);
212
+
213
+ a[2] = in_pro(xn, u3, 3);
214
+
215
+
216
+
217
+ printf("a1[%f], a2[%f], a3[%f]\n \n", a[0], a[1], a[2]);
218
+
219
+
220
+
221
+ for (size_t i = 0; i < 3; i++) g[i] = a[0] * u1[i] + a[1] * u2[i] + a[2] * u3[i];
222
+
223
+
224
+
225
+ printf("g[%f, %f, %f]\n", g[0], g[1], g[2]);
226
+
227
+
228
+
229
+
230
+
231
+ fclose(fp);
232
+
233
+ return 0;
234
+
235
+ }
236
+
237
+
238
+
239
+ double in_pro(double v1[], double v2[], int size)
240
+
241
+ {
242
+
243
+ int i;
244
+
245
+ double x = 0;
246
+
247
+ for (i = 0; i < size; i++) x += v1[i] * v2[i];
248
+
249
+
250
+
251
+ return x;
252
+
253
+ }
254
+
255
+ ```
256
+
257
+
258
+
259
+ ### 補足情報(FW/ツールのバージョンなど)
260
+
261
+
262
+
263
+ VisualStudio2015
264
+
265
+ VCコンパイラ

7

closed

2018/05/31 00:15

投稿

s_clalis
s_clalis

スコア17

test CHANGED
File without changes
test CHANGED
File without changes

6

closed

2018/05/30 09:25

投稿

s_clalis
s_clalis

スコア17

test CHANGED
@@ -1 +1 @@
1
- C言語の3次元配列(文字列)の動的確保並びにfgetsによる読み込み
1
+ C言語の3次元配列(文字列)
test CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
 
4
4
 
5
-  ファイルから1行ずつデータを`char`型配列読み込み、`int`型に変換してから配列平均を除去・正規化し計算して相関係数を算出するプログラムを作る
5
+ ここ質問の内く書いください
6
6
 
7
+ (例)PHP(CakePHP)で●●なシステムを作っています。
8
+
7
-  勉強のためにポインタと動的確保を使ってみることとする
9
+ ■■な機能を実装中に以下エラーメッセージが発生しました。
8
10
 
9
11
 
10
12
 
@@ -12,17 +14,11 @@
12
14
 
13
15
 
14
16
 
15
-  4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。(`data_raw[]`に各4ファイルの階層がありその中の`data_raw[][]`に数値が一行づつ入っている構造)
17
+ ```
16
18
 
17
-  今のところファイルの先頭の行が全ての`data_raw[]`に入ってしまいます。これを`data_raw[][]`に入れたいです。
19
+ エラーメッセージ
18
20
 
19
-
20
-
21
-
22
-
23
-
24
-
25
-  他の方法を選ぶべきでしたらご教授いただけると幸いです。
21
+ ```
26
22
 
27
23
 
28
24
 
@@ -30,229 +26,19 @@
30
26
 
31
27
 
32
28
 
33
- ```C
29
+ ```ここに言語名を入力
34
30
 
35
- #include "targetver.h"
31
+ ソースコード
32
+
33
+ ```
36
34
 
37
35
 
38
36
 
39
- #define _CRT_SECURE_NO_WARNINGS
37
+ ### 試したこと
40
-
41
- #define F_C 4 //file_count
42
-
43
- #define D_S 85 //data_size
44
38
 
45
39
 
46
40
 
47
- #include <math.h>
48
-
49
- #include <stdio.h>
41
+ ここに問題に対して試したことを記載してください。
50
-
51
- #include <stdlib.h>
52
-
53
- #include <tchar.h>
54
-
55
-
56
-
57
-
58
-
59
- double in_pro(double v1[], double v2[], int size);
60
-
61
-
62
-
63
- int main(void)
64
-
65
- {
66
-
67
- FILE *fp;
68
-
69
- int n = 0;
70
-
71
- int sum[F_C], data[F_C][D_S];
72
-
73
- char *filename[F_C] = { "rdata1.txt", "rdata2.txt", "rdata3.txt", "rdata4.txt" };
74
-
75
- char ***data_raw;
76
-
77
- double u1[] = { 1, 0, 0 };
78
-
79
- double u2[] = { 0, sqrt(3) / 2, 0.5 };
80
-
81
- double u3[] = { 0, 0.5, -sqrt(3) / 2 };
82
-
83
- double xn[] = { 2, -1, 1 };
84
-
85
- double a[3];
86
-
87
- double x[6];
88
-
89
- double g[3];
90
-
91
-
92
-
93
- data_raw = (char ***)malloc(sizeof(char **) * F_C);
94
-
95
- for (size_t i = 0; i < F_C; i++)
96
-
97
- {
98
-
99
- data_raw[i] = (char **)malloc(sizeof(char *) * D_S);
100
-
101
- for (size_t j = 0; j < D_S; j++)
102
-
103
- {
104
-
105
- data_raw[i][j] = (char *)malloc(sizeof(char) * 0x10);
106
-
107
- }
108
-
109
- }
110
-
111
-
112
-
113
- for (size_t i = 0; i < F_C; i++)
114
-
115
- {
116
-
117
- if ((fp = fopen(filename[i], "r")) == NULL)
118
-
119
- {
120
-
121
- fprintf(stderr, "Failed to opening %s.\n", filename[i]);
122
-
123
- exit(EXIT_FAILURE);
124
-
125
- }
126
-
127
-
128
-
129
- while (fgets(data_raw[i][n], 0x10, fp) != NULL)
130
-
131
- {
132
-
133
- n++;
134
-
135
- //puts(data_raw[i][n]);
136
-
137
- }
138
-
139
- n = 0;
140
-
141
- }
142
-
143
-
144
-
145
- for (size_t i = 0; i < F_C; i++)
146
-
147
- {
148
-
149
- for (size_t j = 0; j < D_S; j++)
150
-
151
- {
152
-
153
- data[i][j] = atoi(data_raw[i][j]);
154
-
155
- sum[i] += data[i][j];
156
-
157
- }
158
-
159
- sum[i] /= D_S;
160
-
161
- printf("%d\n", sum[i]);
162
-
163
- }
164
-
165
-
166
-
167
-
168
-
169
- printf("***\tH30\tDSP1-3\t23\t***\n\n");
170
-
171
-
172
-
173
- printf("u1:[%f, %f, %f]\n", u1[0], u1[1], u1[2]);
174
-
175
- printf("u2:[%f, %f, %f]\n", u2[0], u2[1], u2[2]);
176
-
177
- printf("u3:[%f, %f, %f]\n \n", u3[0], u3[1], u3[2]);
178
-
179
-
180
-
181
- x[0] = in_pro(u1, u1, 3);
182
-
183
- x[1] = in_pro(u1, u2, 3);
184
-
185
- x[2] = in_pro(u1, u3, 3);
186
-
187
- x[3] = in_pro(u2, u2, 3);
188
-
189
- x[4] = in_pro(u2, u3, 3);
190
-
191
- x[5] = in_pro(u3, u3, 3);
192
-
193
-
194
-
195
- printf("u1 * u1 : %f\n", x[0]);
196
-
197
- printf("u1 * u2 : %f\n", x[1]);
198
-
199
- printf("u1 * u3 : %f\n", x[2]);
200
-
201
- printf("u2 * u2 : %f\n", x[3]);
202
-
203
- printf("u2 * u3 : %f\n", x[4]);
204
-
205
- printf("u3 * u3 : %f\n \n", x[5]);
206
-
207
-
208
-
209
- a[0] = in_pro(xn, u1, 3);
210
-
211
- a[1] = in_pro(xn, u2, 3);
212
-
213
- a[2] = in_pro(xn, u3, 3);
214
-
215
-
216
-
217
- printf("a1[%f], a2[%f], a3[%f]\n \n", a[0], a[1], a[2]);
218
-
219
-
220
-
221
- for (size_t i = 0; i < 3; i++) g[i] = a[0] * u1[i] + a[1] * u2[i] + a[2] * u3[i];
222
-
223
-
224
-
225
- printf("g[%f, %f, %f]\n", g[0], g[1], g[2]);
226
-
227
-
228
-
229
-
230
-
231
- fclose(fp);
232
-
233
- return 0;
234
-
235
- }
236
-
237
-
238
-
239
- double in_pro(double v1[], double v2[], int size)
240
-
241
- {
242
-
243
- int i;
244
-
245
- double x = 0;
246
-
247
- for (i = 0; i < size; i++) x += v1[i] * v2[i];
248
-
249
-
250
-
251
- return x;
252
-
253
- }
254
-
255
- ```
256
42
 
257
43
 
258
44
 
@@ -260,6 +46,4 @@
260
46
 
261
47
 
262
48
 
263
- VisualStudio2015
49
+ ここにより詳細な情報を記載してください。
264
-
265
- VCコンパイラ

5

タイトルを変更し画像を追加しました

2018/05/30 09:19

投稿

s_clalis
s_clalis

スコア17

test CHANGED
@@ -1 +1 @@
1
- C言語の3次元配列(文字列)の動的確保並びに利用方法
1
+ C言語の3次元配列(文字列)の動的確保並びにfgetsによる読み込み
test CHANGED
@@ -18,6 +18,10 @@
18
18
 
19
19
 
20
20
 
21
+
22
+
23
+
24
+
21
25
   他の方法を選ぶべきでしたらご教授いただけると幸いです。
22
26
 
23
27
 

4

質問自体を変更しました。

2018/05/30 08:38

投稿

s_clalis
s_clalis

スコア17

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
-  ファイルから1行ずつデータをchar型配列に読み込み、int型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
5
+  ファイルから1行ずつデータを`char`型配列に読み込み、`int`型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
6
6
 
7
7
   勉強のためにポインタと動的確保を使ってみることとする。
8
8
 
@@ -12,248 +12,244 @@
12
12
 
13
13
 
14
14
 
15
-  4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。
15
+  4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。(`data_raw[]`に各4ファイルの階層がありその中の`data_raw[][]`に数値が一行づつ入っている構造)
16
+
17
+  今のところファイルの先頭の行が全ての`data_raw[]`に入ってしまいます。これを`data_raw[][]`に入れたいです。
18
+
19
+
16
20
 
17
21
   他の方法を選ぶべきでしたらご教授いただけると幸いです。
18
22
 
19
23
 
20
24
 
25
+ ### 該当のソースコード
26
+
27
+
28
+
29
+ ```C
30
+
31
+ #include "targetver.h"
32
+
33
+
34
+
35
+ #define _CRT_SECURE_NO_WARNINGS
36
+
37
+ #define F_C 4 //file_count
38
+
39
+ #define D_S 85 //data_size
40
+
41
+
42
+
43
+ #include <math.h>
44
+
45
+ #include <stdio.h>
46
+
47
+ #include <stdlib.h>
48
+
49
+ #include <tchar.h>
50
+
51
+
52
+
53
+
54
+
55
+ double in_pro(double v1[], double v2[], int size);
56
+
57
+
58
+
59
+ int main(void)
60
+
61
+ {
62
+
63
+ FILE *fp;
64
+
65
+ int n = 0;
66
+
67
+ int sum[F_C], data[F_C][D_S];
68
+
69
+ char *filename[F_C] = { "rdata1.txt", "rdata2.txt", "rdata3.txt", "rdata4.txt" };
70
+
71
+ char ***data_raw;
72
+
73
+ double u1[] = { 1, 0, 0 };
74
+
75
+ double u2[] = { 0, sqrt(3) / 2, 0.5 };
76
+
77
+ double u3[] = { 0, 0.5, -sqrt(3) / 2 };
78
+
79
+ double xn[] = { 2, -1, 1 };
80
+
81
+ double a[3];
82
+
83
+ double x[6];
84
+
85
+ double g[3];
86
+
87
+
88
+
89
+ data_raw = (char ***)malloc(sizeof(char **) * F_C);
90
+
91
+ for (size_t i = 0; i < F_C; i++)
92
+
93
+ {
94
+
95
+ data_raw[i] = (char **)malloc(sizeof(char *) * D_S);
96
+
97
+ for (size_t j = 0; j < D_S; j++)
98
+
99
+ {
100
+
101
+ data_raw[i][j] = (char *)malloc(sizeof(char) * 0x10);
102
+
103
+ }
104
+
105
+ }
106
+
107
+
108
+
109
+ for (size_t i = 0; i < F_C; i++)
110
+
111
+ {
112
+
113
+ if ((fp = fopen(filename[i], "r")) == NULL)
114
+
115
+ {
116
+
117
+ fprintf(stderr, "Failed to opening %s.\n", filename[i]);
118
+
119
+ exit(EXIT_FAILURE);
120
+
121
+ }
122
+
123
+
124
+
125
+ while (fgets(data_raw[i][n], 0x10, fp) != NULL)
126
+
127
+ {
128
+
129
+ n++;
130
+
131
+ //puts(data_raw[i][n]);
132
+
133
+ }
134
+
135
+ n = 0;
136
+
137
+ }
138
+
139
+
140
+
141
+ for (size_t i = 0; i < F_C; i++)
142
+
143
+ {
144
+
145
+ for (size_t j = 0; j < D_S; j++)
146
+
147
+ {
148
+
149
+ data[i][j] = atoi(data_raw[i][j]);
150
+
151
+ sum[i] += data[i][j];
152
+
153
+ }
154
+
155
+ sum[i] /= D_S;
156
+
157
+ printf("%d\n", sum[i]);
158
+
159
+ }
160
+
161
+
162
+
163
+
164
+
165
+ printf("***\tH30\tDSP1-3\t23\t***\n\n");
166
+
167
+
168
+
169
+ printf("u1:[%f, %f, %f]\n", u1[0], u1[1], u1[2]);
170
+
171
+ printf("u2:[%f, %f, %f]\n", u2[0], u2[1], u2[2]);
172
+
173
+ printf("u3:[%f, %f, %f]\n \n", u3[0], u3[1], u3[2]);
174
+
175
+
176
+
177
+ x[0] = in_pro(u1, u1, 3);
178
+
179
+ x[1] = in_pro(u1, u2, 3);
180
+
181
+ x[2] = in_pro(u1, u3, 3);
182
+
183
+ x[3] = in_pro(u2, u2, 3);
184
+
185
+ x[4] = in_pro(u2, u3, 3);
186
+
187
+ x[5] = in_pro(u3, u3, 3);
188
+
189
+
190
+
191
+ printf("u1 * u1 : %f\n", x[0]);
192
+
193
+ printf("u1 * u2 : %f\n", x[1]);
194
+
195
+ printf("u1 * u3 : %f\n", x[2]);
196
+
197
+ printf("u2 * u2 : %f\n", x[3]);
198
+
199
+ printf("u2 * u3 : %f\n", x[4]);
200
+
201
+ printf("u3 * u3 : %f\n \n", x[5]);
202
+
203
+
204
+
205
+ a[0] = in_pro(xn, u1, 3);
206
+
207
+ a[1] = in_pro(xn, u2, 3);
208
+
209
+ a[2] = in_pro(xn, u3, 3);
210
+
211
+
212
+
213
+ printf("a1[%f], a2[%f], a3[%f]\n \n", a[0], a[1], a[2]);
214
+
215
+
216
+
217
+ for (size_t i = 0; i < 3; i++) g[i] = a[0] * u1[i] + a[1] * u2[i] + a[2] * u3[i];
218
+
219
+
220
+
221
+ printf("g[%f, %f, %f]\n", g[0], g[1], g[2]);
222
+
223
+
224
+
225
+
226
+
227
+ fclose(fp);
228
+
229
+ return 0;
230
+
231
+ }
232
+
233
+
234
+
235
+ double in_pro(double v1[], double v2[], int size)
236
+
237
+ {
238
+
239
+ int i;
240
+
241
+ double x = 0;
242
+
243
+ for (i = 0; i < size; i++) x += v1[i] * v2[i];
244
+
245
+
246
+
247
+ return x;
248
+
249
+ }
250
+
21
251
  ```
22
252
 
23
- 0x0FE0BAC1 (ucrtbased.dll) で例外がスローされました (ConsoleApplication1.exe 内): 0xC0000005: 場所 0xFDFDFDFD への書き込み中にアクセス違反が発生しました
24
-
25
- ```
26
-
27
-
28
-
29
- ### 該当のソースコード
30
-
31
-
32
-
33
- ```C
34
-
35
- #include "targetver.h"
36
-
37
-
38
-
39
- #define _CRT_SECURE_NO_WARNINGS
40
-
41
- #define F_C 4 //file_count
42
-
43
- #define D_S 85 //data_size
44
-
45
-
46
-
47
- #include <math.h>
48
-
49
- #include <stdio.h>
50
-
51
- #include <stdlib.h>
52
-
53
- #include <tchar.h>
54
-
55
-
56
-
57
-
58
-
59
- double in_pro(double v1[], double v2[], int size);
60
-
61
-
62
-
63
- int main(void)
64
-
65
- {
66
-
67
- FILE *fp;
68
-
69
- int n = 0;
70
-
71
- int sum[F_C], data[F_C][D_S];
72
-
73
- char *filename[F_C] = { "rdata1.txt", "rdata2.txt", "rdata3.txt", "rdata4.txt" };
74
-
75
- char ***data_raw;
76
-
77
- double u1[] = { 1, 0, 0 };
78
-
79
- double u2[] = { 0, sqrt(3) / 2, 0.5 };
80
-
81
- double u3[] = { 0, 0.5, -sqrt(3) / 2 };
82
-
83
- double xn[] = { 2, -1, 1 };
84
-
85
- double a[3];
86
-
87
- double x[6];
88
-
89
- double g[3];
90
-
91
-
92
-
93
- data_raw = (char ***)malloc(sizeof(char **) * F_C);
94
-
95
- for (size_t i = 0; i < F_C; i++)
96
-
97
- {
98
-
99
- data_raw[i] = (char **)malloc(sizeof(char *) * D_S);
100
-
101
- for (size_t j = 0; j < D_S; j++)
102
-
103
- {
104
-
105
- data_raw[i][j] = (char *)malloc(sizeof(char) * 0x10);
106
-
107
- }
108
-
109
- }
110
-
111
-
112
-
113
- for (size_t i = 0; i < F_C; i++)
114
-
115
- {
116
-
117
- if ((fp = fopen(filename[i], "r")) == NULL)
118
-
119
- {
120
-
121
- fprintf(stderr, "Failed to opening %s.\n", filename[i]);
122
-
123
- exit(EXIT_FAILURE);
124
-
125
- }
126
-
127
-
128
-
129
- while (fgets(data_raw[i][n], 0x10, fp) != NULL)
130
-
131
- {
132
-
133
- n++;
134
-
135
- //puts(data_raw[i][n]);
136
-
137
- }
138
-
139
- n = 0;
140
-
141
- }
142
-
143
-
144
-
145
- for (size_t i = 0; i < F_C; i++)
146
-
147
- {
148
-
149
- for (size_t j = 0; j < D_S; j++)
150
-
151
- {
152
-
153
- data[i][j] = atoi(data_raw[i][j]);
154
-
155
- sum[i] += data[i][j];
156
-
157
- }
158
-
159
- sum[i] /= D_S;
160
-
161
- printf("%d\n", sum[i]);
162
-
163
- }
164
-
165
-
166
-
167
-
168
-
169
- printf("***\tH30\tDSP1-3\t23\t***\n\n");
170
-
171
-
172
-
173
- printf("u1:[%f, %f, %f]\n", u1[0], u1[1], u1[2]);
174
-
175
- printf("u2:[%f, %f, %f]\n", u2[0], u2[1], u2[2]);
176
-
177
- printf("u3:[%f, %f, %f]\n \n", u3[0], u3[1], u3[2]);
178
-
179
-
180
-
181
- x[0] = in_pro(u1, u1, 3);
182
-
183
- x[1] = in_pro(u1, u2, 3);
184
-
185
- x[2] = in_pro(u1, u3, 3);
186
-
187
- x[3] = in_pro(u2, u2, 3);
188
-
189
- x[4] = in_pro(u2, u3, 3);
190
-
191
- x[5] = in_pro(u3, u3, 3);
192
-
193
-
194
-
195
- printf("u1 * u1 : %f\n", x[0]);
196
-
197
- printf("u1 * u2 : %f\n", x[1]);
198
-
199
- printf("u1 * u3 : %f\n", x[2]);
200
-
201
- printf("u2 * u2 : %f\n", x[3]);
202
-
203
- printf("u2 * u3 : %f\n", x[4]);
204
-
205
- printf("u3 * u3 : %f\n \n", x[5]);
206
-
207
-
208
-
209
- a[0] = in_pro(xn, u1, 3);
210
-
211
- a[1] = in_pro(xn, u2, 3);
212
-
213
- a[2] = in_pro(xn, u3, 3);
214
-
215
-
216
-
217
- printf("a1[%f], a2[%f], a3[%f]\n \n", a[0], a[1], a[2]);
218
-
219
-
220
-
221
- for (size_t i = 0; i < 3; i++) g[i] = a[0] * u1[i] + a[1] * u2[i] + a[2] * u3[i];
222
-
223
-
224
-
225
- printf("g[%f, %f, %f]\n", g[0], g[1], g[2]);
226
-
227
-
228
-
229
-
230
-
231
- fclose(fp);
232
-
233
- return 0;
234
-
235
- }
236
-
237
-
238
-
239
- double in_pro(double v1[], double v2[], int size)
240
-
241
- {
242
-
243
- int i;
244
-
245
- double x = 0;
246
-
247
- for (i = 0; i < size; i++) x += v1[i] * v2[i];
248
-
249
-
250
-
251
- return x;
252
-
253
- }
254
-
255
- ```
256
-
257
253
 
258
254
 
259
255
  ### 補足情報(FW/ツールのバージョンなど)

3

前提と実現したいことを更新しました。

2018/05/30 08:31

投稿

s_clalis
s_clalis

スコア17

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
-  ファイルからデータを配列に読み込み、配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
5
+  ファイルから1行ずつデータをchar型配列に読み込み、int型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
6
+
7
+  勉強のためにポインタと動的確保を使ってみることとする。
6
8
 
7
9
 
8
10
 

2

2018/05/30 07:56

投稿

s_clalis
s_clalis

スコア17

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
-  3つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。
13
+  4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。
14
14
 
15
15
   他の方法を選ぶべきでしたらご教授いただけると幸いです。
16
16
 

1

2018/05/29 23:53

投稿

s_clalis
s_clalis

スコア17

test CHANGED
File without changes
test CHANGED
File without changes