質問編集履歴
8
削除禁止の規約により再掲
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,25 +1,133 @@
|
|
1
|
-
### 前提・実現したいこと
|
1
|
+
### 前提・実現したいこと
|
2
2
|
|
3
|
-
ここに質問の内容を詳しく書いてください。
|
4
|
-
|
3
|
+
ファイルから1行ずつデータを`char`型配列に読み込み、`int`型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
|
5
|
-
|
4
|
+
勉強のためにポインタと動的確保を使ってみることとする。
|
6
5
|
|
7
|
-
### 発生している問題・エラーメッセージ
|
6
|
+
### 発生している問題・エラーメッセージ
|
8
7
|
|
9
|
-
```
|
8
|
+
4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。(`data_raw[]`に各4ファイルの階層がありその中の`data_raw[][]`に数値が一行づつ入っている構造)
|
10
|
-
|
9
|
+
今のところファイルの先頭の行が全ての`data_raw[]`に入ってしまいます。これを`data_raw[][]`に入れたいです。
|
11
|
-
|
10
|
+
|
11
|
+
|
12
12
|
|
13
|
-
|
13
|
+
他の方法を選ぶべきでしたらご教授いただけると幸いです。
|
14
14
|
|
15
|
-
```ここに言語名を入力
|
16
|
-
ソースコード
|
15
|
+
### 該当のソースコード
|
17
|
-
```
|
18
16
|
|
19
|
-
|
17
|
+
```C
|
18
|
+
#include "targetver.h"
|
20
19
|
|
21
|
-
|
20
|
+
#define _CRT_SECURE_NO_WARNINGS
|
21
|
+
#define F_C 4 //file_count
|
22
|
+
#define D_S 85 //data_size
|
22
23
|
|
24
|
+
#include <math.h>
|
25
|
+
#include <stdio.h>
|
23
|
-
#
|
26
|
+
#include <stdlib.h>
|
27
|
+
#include <tchar.h>
|
24
28
|
|
29
|
+
|
30
|
+
double in_pro(double v1[], double v2[], int size);
|
31
|
+
|
32
|
+
int main(void)
|
33
|
+
{
|
34
|
+
FILE *fp;
|
35
|
+
int n = 0;
|
36
|
+
int sum[F_C], data[F_C][D_S];
|
37
|
+
char *filename[F_C] = { "rdata1.txt", "rdata2.txt", "rdata3.txt", "rdata4.txt" };
|
38
|
+
char ***data_raw;
|
39
|
+
double u1[] = { 1, 0, 0 };
|
40
|
+
double u2[] = { 0, sqrt(3) / 2, 0.5 };
|
41
|
+
double u3[] = { 0, 0.5, -sqrt(3) / 2 };
|
42
|
+
double xn[] = { 2, -1, 1 };
|
43
|
+
double a[3];
|
44
|
+
double x[6];
|
45
|
+
double g[3];
|
46
|
+
|
47
|
+
data_raw = (char ***)malloc(sizeof(char **) * F_C);
|
48
|
+
for (size_t i = 0; i < F_C; i++)
|
49
|
+
{
|
50
|
+
data_raw[i] = (char **)malloc(sizeof(char *) * D_S);
|
51
|
+
for (size_t j = 0; j < D_S; j++)
|
52
|
+
{
|
53
|
+
data_raw[i][j] = (char *)malloc(sizeof(char) * 0x10);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
for (size_t i = 0; i < F_C; i++)
|
58
|
+
{
|
59
|
+
if ((fp = fopen(filename[i], "r")) == NULL)
|
60
|
+
{
|
61
|
+
fprintf(stderr, "Failed to opening %s.\n", filename[i]);
|
62
|
+
exit(EXIT_FAILURE);
|
63
|
+
}
|
64
|
+
|
65
|
+
while (fgets(data_raw[i][n], 0x10, fp) != NULL)
|
66
|
+
{
|
67
|
+
n++;
|
68
|
+
//puts(data_raw[i][n]);
|
69
|
+
}
|
70
|
+
n = 0;
|
71
|
+
}
|
72
|
+
|
73
|
+
for (size_t i = 0; i < F_C; i++)
|
74
|
+
{
|
75
|
+
for (size_t j = 0; j < D_S; j++)
|
76
|
+
{
|
77
|
+
data[i][j] = atoi(data_raw[i][j]);
|
25
|
-
|
78
|
+
sum[i] += data[i][j];
|
79
|
+
}
|
80
|
+
sum[i] /= D_S;
|
81
|
+
printf("%d\n", sum[i]);
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
printf("***\tH30\tDSP1-3\t23\t***\n\n");
|
86
|
+
|
87
|
+
printf("u1:[%f, %f, %f]\n", u1[0], u1[1], u1[2]);
|
88
|
+
printf("u2:[%f, %f, %f]\n", u2[0], u2[1], u2[2]);
|
89
|
+
printf("u3:[%f, %f, %f]\n \n", u3[0], u3[1], u3[2]);
|
90
|
+
|
91
|
+
x[0] = in_pro(u1, u1, 3);
|
92
|
+
x[1] = in_pro(u1, u2, 3);
|
93
|
+
x[2] = in_pro(u1, u3, 3);
|
94
|
+
x[3] = in_pro(u2, u2, 3);
|
95
|
+
x[4] = in_pro(u2, u3, 3);
|
96
|
+
x[5] = in_pro(u3, u3, 3);
|
97
|
+
|
98
|
+
printf("u1 * u1 : %f\n", x[0]);
|
99
|
+
printf("u1 * u2 : %f\n", x[1]);
|
100
|
+
printf("u1 * u3 : %f\n", x[2]);
|
101
|
+
printf("u2 * u2 : %f\n", x[3]);
|
102
|
+
printf("u2 * u3 : %f\n", x[4]);
|
103
|
+
printf("u3 * u3 : %f\n \n", x[5]);
|
104
|
+
|
105
|
+
a[0] = in_pro(xn, u1, 3);
|
106
|
+
a[1] = in_pro(xn, u2, 3);
|
107
|
+
a[2] = in_pro(xn, u3, 3);
|
108
|
+
|
109
|
+
printf("a1[%f], a2[%f], a3[%f]\n \n", a[0], a[1], a[2]);
|
110
|
+
|
111
|
+
for (size_t i = 0; i < 3; i++) g[i] = a[0] * u1[i] + a[1] * u2[i] + a[2] * u3[i];
|
112
|
+
|
113
|
+
printf("g[%f, %f, %f]\n", g[0], g[1], g[2]);
|
114
|
+
|
115
|
+
|
116
|
+
fclose(fp);
|
117
|
+
return 0;
|
118
|
+
}
|
119
|
+
|
120
|
+
double in_pro(double v1[], double v2[], int size)
|
121
|
+
{
|
122
|
+
int i;
|
123
|
+
double x = 0;
|
124
|
+
for (i = 0; i < size; i++) x += v1[i] * v2[i];
|
125
|
+
|
126
|
+
return x;
|
127
|
+
}
|
128
|
+
```
|
129
|
+
|
130
|
+
### 補足情報(FW/ツールのバージョンなど)
|
131
|
+
|
132
|
+
VisualStudio2015
|
133
|
+
VCコンパイラ
|
7
closed
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
6
closed
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
C言語の3次元配列(文字列)
|
1
|
+
C言語の3次元配列(文字列)
|
body
CHANGED
@@ -1,133 +1,25 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
+
ここに質問の内容を詳しく書いてください。
|
3
|
-
|
4
|
+
(例)PHP(CakePHP)で●●なシステムを作っています。
|
4
|
-
|
5
|
+
■■な機能を実装中に以下のエラーメッセージが発生しました。
|
5
6
|
|
6
7
|
### 発生している問題・エラーメッセージ
|
7
8
|
|
8
|
-
|
9
|
+
```
|
9
|
-
|
10
|
+
エラーメッセージ
|
11
|
+
```
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
他の方法を選ぶべきでしたらご教授いただけると幸いです。
|
14
|
-
|
15
13
|
### 該当のソースコード
|
16
14
|
|
15
|
+
```ここに言語名を入力
|
16
|
+
ソースコード
|
17
|
-
```
|
17
|
+
```
|
18
|
-
#include "targetver.h"
|
19
18
|
|
20
|
-
#
|
19
|
+
### 試したこと
|
21
|
-
#define F_C 4 //file_count
|
22
|
-
#define D_S 85 //data_size
|
23
20
|
|
24
|
-
#include <math.h>
|
25
|
-
|
21
|
+
ここに問題に対して試したことを記載してください。
|
26
|
-
#include <stdlib.h>
|
27
|
-
#include <tchar.h>
|
28
22
|
|
29
|
-
|
30
|
-
double in_pro(double v1[], double v2[], int size);
|
31
|
-
|
32
|
-
int main(void)
|
33
|
-
{
|
34
|
-
FILE *fp;
|
35
|
-
int n = 0;
|
36
|
-
int sum[F_C], data[F_C][D_S];
|
37
|
-
char *filename[F_C] = { "rdata1.txt", "rdata2.txt", "rdata3.txt", "rdata4.txt" };
|
38
|
-
char ***data_raw;
|
39
|
-
double u1[] = { 1, 0, 0 };
|
40
|
-
double u2[] = { 0, sqrt(3) / 2, 0.5 };
|
41
|
-
double u3[] = { 0, 0.5, -sqrt(3) / 2 };
|
42
|
-
double xn[] = { 2, -1, 1 };
|
43
|
-
double a[3];
|
44
|
-
double x[6];
|
45
|
-
double g[3];
|
46
|
-
|
47
|
-
data_raw = (char ***)malloc(sizeof(char **) * F_C);
|
48
|
-
for (size_t i = 0; i < F_C; i++)
|
49
|
-
{
|
50
|
-
data_raw[i] = (char **)malloc(sizeof(char *) * D_S);
|
51
|
-
for (size_t j = 0; j < D_S; j++)
|
52
|
-
{
|
53
|
-
data_raw[i][j] = (char *)malloc(sizeof(char) * 0x10);
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
for (size_t i = 0; i < F_C; i++)
|
58
|
-
{
|
59
|
-
if ((fp = fopen(filename[i], "r")) == NULL)
|
60
|
-
{
|
61
|
-
fprintf(stderr, "Failed to opening %s.\n", filename[i]);
|
62
|
-
exit(EXIT_FAILURE);
|
63
|
-
}
|
64
|
-
|
65
|
-
while (fgets(data_raw[i][n], 0x10, fp) != NULL)
|
66
|
-
{
|
67
|
-
n++;
|
68
|
-
//puts(data_raw[i][n]);
|
69
|
-
}
|
70
|
-
n = 0;
|
71
|
-
}
|
72
|
-
|
73
|
-
for (size_t i = 0; i < F_C; i++)
|
74
|
-
{
|
75
|
-
for (size_t j = 0; j < D_S; j++)
|
76
|
-
{
|
77
|
-
data[i][j] = atoi(data_raw[i][j]);
|
78
|
-
sum[i] += data[i][j];
|
79
|
-
}
|
80
|
-
sum[i] /= D_S;
|
81
|
-
printf("%d\n", sum[i]);
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
printf("***\tH30\tDSP1-3\t23\t***\n\n");
|
86
|
-
|
87
|
-
printf("u1:[%f, %f, %f]\n", u1[0], u1[1], u1[2]);
|
88
|
-
printf("u2:[%f, %f, %f]\n", u2[0], u2[1], u2[2]);
|
89
|
-
printf("u3:[%f, %f, %f]\n \n", u3[0], u3[1], u3[2]);
|
90
|
-
|
91
|
-
x[0] = in_pro(u1, u1, 3);
|
92
|
-
x[1] = in_pro(u1, u2, 3);
|
93
|
-
x[2] = in_pro(u1, u3, 3);
|
94
|
-
x[3] = in_pro(u2, u2, 3);
|
95
|
-
x[4] = in_pro(u2, u3, 3);
|
96
|
-
x[5] = in_pro(u3, u3, 3);
|
97
|
-
|
98
|
-
printf("u1 * u1 : %f\n", x[0]);
|
99
|
-
printf("u1 * u2 : %f\n", x[1]);
|
100
|
-
printf("u1 * u3 : %f\n", x[2]);
|
101
|
-
printf("u2 * u2 : %f\n", x[3]);
|
102
|
-
printf("u2 * u3 : %f\n", x[4]);
|
103
|
-
printf("u3 * u3 : %f\n \n", x[5]);
|
104
|
-
|
105
|
-
a[0] = in_pro(xn, u1, 3);
|
106
|
-
a[1] = in_pro(xn, u2, 3);
|
107
|
-
a[2] = in_pro(xn, u3, 3);
|
108
|
-
|
109
|
-
printf("a1[%f], a2[%f], a3[%f]\n \n", a[0], a[1], a[2]);
|
110
|
-
|
111
|
-
for (size_t i = 0; i < 3; i++) g[i] = a[0] * u1[i] + a[1] * u2[i] + a[2] * u3[i];
|
112
|
-
|
113
|
-
printf("g[%f, %f, %f]\n", g[0], g[1], g[2]);
|
114
|
-
|
115
|
-
|
116
|
-
fclose(fp);
|
117
|
-
return 0;
|
118
|
-
}
|
119
|
-
|
120
|
-
double in_pro(double v1[], double v2[], int size)
|
121
|
-
{
|
122
|
-
int i;
|
123
|
-
double x = 0;
|
124
|
-
for (i = 0; i < size; i++) x += v1[i] * v2[i];
|
125
|
-
|
126
|
-
return x;
|
127
|
-
}
|
128
|
-
```
|
129
|
-
|
130
23
|
### 補足情報(FW/ツールのバージョンなど)
|
131
24
|
|
132
|
-
|
25
|
+
ここにより詳細な情報を記載してください。
|
133
|
-
VCコンパイラ
|
5
タイトルを変更し画像を追加しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
C言語の3次元配列(文字列)の動的確保並びに
|
1
|
+
C言語の3次元配列(文字列)の動的確保並びにfgetsによる読み込み
|
body
CHANGED
@@ -8,6 +8,8 @@
|
|
8
8
|
4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。(`data_raw[]`に各4ファイルの階層がありその中の`data_raw[][]`に数値が一行づつ入っている構造)
|
9
9
|
今のところファイルの先頭の行が全ての`data_raw[]`に入ってしまいます。これを`data_raw[][]`に入れたいです。
|
10
10
|
|
11
|
+
|
12
|
+
|
11
13
|
他の方法を選ぶべきでしたらご教授いただけると幸いです。
|
12
14
|
|
13
15
|
### 該当のソースコード
|
4
質問自体を変更しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
ファイルから1行ずつデータをchar型配列に読み込み、int型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
|
3
|
+
ファイルから1行ずつデータを`char`型配列に読み込み、`int`型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
|
4
4
|
勉強のためにポインタと動的確保を使ってみることとする。
|
5
5
|
|
6
6
|
### 発生している問題・エラーメッセージ
|
7
7
|
|
8
|
-
4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。
|
8
|
+
4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。(`data_raw[]`に各4ファイルの階層がありその中の`data_raw[][]`に数値が一行づつ入っている構造)
|
9
|
+
今のところファイルの先頭の行が全ての`data_raw[]`に入ってしまいます。これを`data_raw[][]`に入れたいです。
|
10
|
+
|
9
11
|
他の方法を選ぶべきでしたらご教授いただけると幸いです。
|
10
12
|
|
11
|
-
```
|
12
|
-
0x0FE0BAC1 (ucrtbased.dll) で例外がスローされました (ConsoleApplication1.exe 内): 0xC0000005: 場所 0xFDFDFDFD への書き込み中にアクセス違反が発生しました
|
13
|
-
```
|
14
|
-
|
15
13
|
### 該当のソースコード
|
16
14
|
|
17
15
|
```C
|
3
前提と実現したいことを更新しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
ファイルからデータを配列に読み込み、配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
|
3
|
+
ファイルから1行ずつデータをchar型配列に読み込み、int型に変換してから配列の平均を除去・正規化し内積を計算して相関係数を算出するプログラムを作る。
|
4
|
+
勉強のためにポインタと動的確保を使ってみることとする。
|
4
5
|
|
5
6
|
### 発生している問題・エラーメッセージ
|
6
7
|
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
### 発生している問題・エラーメッセージ
|
6
6
|
|
7
|
-
|
7
|
+
4つのファイル別のデータを各配列に入れて利用したいのですが、想定したとおりに構造ができず困っています。
|
8
8
|
他の方法を選ぶべきでしたらご教授いただけると幸いです。
|
9
9
|
|
10
10
|
```
|
1
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|