質問編集履歴

6

update

2021/01/20 08:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,276 @@
8
8
 
9
9
  質問2回目です。質問等が伝わりにくかったらごめんなさい。お願いします。
10
10
 
11
+ ### 該当のソースコード
12
+
13
+ ```C
14
+
15
+ #include <stdio.h>
16
+
17
+ #include <stdlib.h> //exit関数を用いるために必要
18
+
19
+
20
+
21
+ int main()
22
+
23
+ {
24
+
25
+ //readfは読み込むファイル,writefは書き込むファイル
26
+
27
+ FILE *readf_in1, *readf_in2, *writef_in;
28
+
29
+
30
+
31
+ char in1[] = "in.dat1";
32
+
33
+ char in2[] = "in.dat2";
34
+
35
+
36
+
37
+ int point1[1024][16];//配列の数は適当です。
38
+
39
+ int point2[1024][16];
40
+
41
+ float fpoint1[1024][4];
42
+
43
+ float fpoint2[1024][4];
44
+
45
+ double epoint1[1024][3];
46
+
47
+ double epoint2[1024][3];
48
+
49
+ double ecomb2[1024][3];
50
+
51
+
52
+
53
+ //読み込むファイルをopen
54
+
55
+ readf_in1 = fopen(in1,"r");
56
+
57
+ if(readf_in1 == NULL){//エラー処理
58
+
59
+ printf("error in.dat1\n");
60
+
61
+ exit(1); //強制終了
62
+
63
+ }
64
+
65
+ else{
66
+
67
+ printf("read in.dat1\n");
68
+
69
+ }
70
+
71
+ //読み込むファイルをopen
72
+
73
+ readf_in2 = fopen(in2,"r");
74
+
75
+ if(readf_in2 == NULL){//エラー処理
76
+
77
+ fclose(readf_in1);
78
+
79
+ printf("error in.dat2\n");
80
+
81
+ exit(1); //強制終了
82
+
83
+ }
84
+
85
+ else{
86
+
87
+ printf("read in.dat2\n");
88
+
89
+ }
90
+
91
+
92
+
93
+ //書き込むファイルをopen
94
+
95
+ writef_in = fopen("in.dat", "w");
96
+
97
+ if(writef_in == NULL){//エラー処理
98
+
99
+ fclose(readf_in1);
100
+
101
+ fclose(readf_in2);
102
+
103
+ printf("error in.dat\n");
104
+
105
+ exit(1); //強制終了
106
+
107
+ }
108
+
109
+ else{
110
+
111
+ printf("write in.dat\n");
112
+
113
+ }
114
+
115
+
116
+
117
+ for(int i = 0; i < 4; i++) {//配列に保存
118
+
119
+ fscanf(readf_in1,"%d", &(point1[0][i]));
120
+
121
+ }
122
+
123
+ for(int i = 0; i < 4; i++) {//配列に保存
124
+
125
+ fscanf(readf_in2,"%d", &(point2[0][i]));
126
+
127
+ }
128
+
129
+ for(int i = 0; i < 1; i++) {//配列に保存
130
+
131
+ fscanf(readf_in1,"%E", &(fpoint1[0][i]));
132
+
133
+ }
134
+
135
+ for(int i = 0; i < 1; i++) {//配列に保存
136
+
137
+ fscanf(readf_in2,"%E", &(fpoint2[0][i]));
138
+
139
+ }
140
+
141
+ for(int i = 1; i < point1[0][1]+1; i++){//配列に保存
142
+
143
+ for(int j = 0; j < 4; j++){
144
+
145
+ fscanf(readf_in1,"%d",
146
+
147
+ &(point1[i][j]),
148
+
149
+ &(point1[i][j+1]),
150
+
151
+ &(point1[i][j+2]),
152
+
153
+ &(point1[i][j+3])
154
+
155
+ );
156
+
157
+ }
158
+
159
+ }
160
+
161
+ for(int i = 1; i < point2[0][1]+1; i++){//配列に保存
162
+
163
+ for(int j = 0; j < 4; j++){
164
+
165
+ fscanf(readf_in2,"%d",
166
+
167
+ &(point2[i][j]),
168
+
169
+ &(point2[i][j+1]),
170
+
171
+ &(point2[i][j+2]),
172
+
173
+ &(point2[i][j+3])
174
+
175
+ );
176
+
177
+ }
178
+
179
+ }
180
+
181
+ for(int i = 1; i < point1[0][0]+1; i++){//配列に保存
182
+
183
+ for(int j = 0; j < 3; j++){
184
+
185
+ fscanf(readf_in1,"%lf", //lfは倍精度実数で読み取る
186
+
187
+ &(epoint1[i][j]),
188
+
189
+ &(epoint1[i][j+1]),
190
+
191
+ &(epoint1[i][j+2])
192
+
193
+ );
194
+
195
+ }
196
+
197
+ }
198
+
199
+ for(int i = 1; i < point2[0][0]+1; i++){//配列に保存
200
+
201
+ for(int j = 0; j < 3; j++){
202
+
203
+ fscanf(readf_in2,"%lf", //lfは倍精度実数で読み取る
204
+
205
+ &(epoint2[i][j]),
206
+
207
+ &(epoint2[i][j+1]),
208
+
209
+ &(epoint2[i][j+2])
210
+
211
+ );
212
+
213
+ }
214
+
215
+ }
216
+
217
+
218
+
219
+ /* -- ここからわかりません -- */
220
+
221
+ int k = 0;
222
+
223
+ for(int i = 0; i < point2[0][0]; i++){
224
+
225
+ for(int j =0; j < point1[0][0]; j++){
226
+
227
+ if(epoint1[i][0] == epoint2[j][0] && epoint1[i][1] == epoint2[j][1] && epoint1[i][3] == epoint2[j][3] ){
228
+
229
+ printf("match\n");
230
+
231
+ }
232
+
233
+ else{
234
+
235
+ k = k + 1;
236
+
237
+ ecomb2[k][0] = epoint2[j][0];
238
+
239
+ ecomb2[k][1] = epoint2[j][1];
240
+
241
+ ecomb2[k][2] = epoint2[j][2];
242
+
243
+ }
244
+
245
+ }
246
+
247
+ }
248
+
249
+
250
+
251
+ fprintf(writef_in,"%8d\n", k);//確認用
252
+
253
+ for(int i = 0; i < k; i++){
254
+
255
+ fprintf(writef_in,"%24.13E%24.13E%24.13E\n",
256
+
257
+ ecomb2[i][0], ecomb2[i][1], ecomb2[i][2]
258
+
259
+ );
260
+
261
+ }
262
+
263
+ /* -- ここまでわかりません -- */
264
+
265
+
266
+
267
+ //ファイルをclose
268
+
269
+ fclose(readf_in1);
270
+
271
+ fclose(readf_in2);
272
+
273
+ fclose(writef_in);
274
+
275
+ }
276
+
277
+ ```
278
+
279
+
280
+
11
281
  ### ファイルのフォーマット
12
282
 
13
283
  ```dat

5

delete

2021/01/20 08:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -7,274 +7,6 @@
7
7
  ファイルのフォーマットとそれぞれのファイルの内容も載せておきます。
8
8
 
9
9
  質問2回目です。質問等が伝わりにくかったらごめんなさい。お願いします。
10
-
11
- ### 該当のソースコード
12
-
13
- ```C
14
-
15
- #include <stdio.h>
16
-
17
- #include <stdlib.h> //exit関数を用いるために必要
18
-
19
-
20
-
21
- int main()
22
-
23
- {
24
-
25
- //readfは読み込むファイル,writefは書き込むファイル
26
-
27
- FILE *readf_in1, *readf_in2, *writef_in;
28
-
29
-
30
-
31
- char in1[] = "in.dat1";
32
-
33
- char in2[] = "in.dat2";
34
-
35
-
36
-
37
- int point1[1024][16];//配列の数は適当です。
38
-
39
- int point2[1024][16];
40
-
41
- float fpoint1[1024][4];
42
-
43
- float fpoint2[1024][4];
44
-
45
- double epoint1[1024][3];
46
-
47
- double epoint2[1024][3];
48
-
49
- double ecomb2[1024][3];
50
-
51
-
52
-
53
- //読み込むファイルをopen
54
-
55
- readf_in1 = fopen(in1,"r");
56
-
57
- if(readf_in1 == NULL){//エラー処理
58
-
59
- printf("error in.dat1\n");
60
-
61
- exit(1); //強制終了
62
-
63
- }
64
-
65
- else{
66
-
67
- printf("read in.dat1\n");
68
-
69
- }
70
-
71
- //読み込むファイルをopen
72
-
73
- readf_in2 = fopen(in2,"r");
74
-
75
- if(readf_in2 == NULL){//エラー処理
76
-
77
- fclose(readf_in1);
78
-
79
- printf("error in.dat2\n");
80
-
81
- exit(1); //強制終了
82
-
83
- }
84
-
85
- else{
86
-
87
- printf("read in.dat2\n");
88
-
89
- }
90
-
91
-
92
-
93
- //書き込むファイルをopen
94
-
95
- writef_in = fopen("in.dat", "w");
96
-
97
- if(writef_in == NULL){//エラー処理
98
-
99
- fclose(readf_in1);
100
-
101
- fclose(readf_in2);
102
-
103
- printf("error in.dat\n");
104
-
105
- exit(1); //強制終了
106
-
107
- }
108
-
109
- else{
110
-
111
- printf("write in.dat\n");
112
-
113
- }
114
-
115
-
116
-
117
- for(int i = 0; i < 4; i++) {//配列に保存
118
-
119
- fscanf(readf_in1,"%d", &(point1[0][i]));
120
-
121
- }
122
-
123
- for(int i = 0; i < 4; i++) {//配列に保存
124
-
125
- fscanf(readf_in2,"%d", &(point2[0][i]));
126
-
127
- }
128
-
129
- for(int i = 0; i < 1; i++) {//配列に保存
130
-
131
- fscanf(readf_in1,"%E", &(fpoint1[0][i]));
132
-
133
- }
134
-
135
- for(int i = 0; i < 1; i++) {//配列に保存
136
-
137
- fscanf(readf_in2,"%E", &(fpoint2[0][i]));
138
-
139
- }
140
-
141
- for(int i = 1; i < point1[0][1]+1; i++){//配列に保存
142
-
143
- for(int j = 0; j < 4; j++){
144
-
145
- fscanf(readf_in1,"%d",
146
-
147
- &(point1[i][j]),
148
-
149
- &(point1[i][j+1]),
150
-
151
- &(point1[i][j+2]),
152
-
153
- &(point1[i][j+3])
154
-
155
- );
156
-
157
- }
158
-
159
- }
160
-
161
- for(int i = 1; i < point2[0][1]+1; i++){//配列に保存
162
-
163
- for(int j = 0; j < 4; j++){
164
-
165
- fscanf(readf_in2,"%d",
166
-
167
- &(point2[i][j]),
168
-
169
- &(point2[i][j+1]),
170
-
171
- &(point2[i][j+2]),
172
-
173
- &(point2[i][j+3])
174
-
175
- );
176
-
177
- }
178
-
179
- }
180
-
181
- for(int i = 1; i < point1[0][0]+1; i++){//配列に保存
182
-
183
- for(int j = 0; j < 3; j++){
184
-
185
- fscanf(readf_in1,"%lf", //lfは倍精度実数で読み取る
186
-
187
- &(epoint1[i][j]),
188
-
189
- &(epoint1[i][j+1]),
190
-
191
- &(epoint1[i][j+2])
192
-
193
- );
194
-
195
- }
196
-
197
- }
198
-
199
- for(int i = 1; i < point2[0][0]+1; i++){//配列に保存
200
-
201
- for(int j = 0; j < 3; j++){
202
-
203
- fscanf(readf_in2,"%lf", //lfは倍精度実数で読み取る
204
-
205
- &(epoint2[i][j]),
206
-
207
- &(epoint2[i][j+1]),
208
-
209
- &(epoint2[i][j+2])
210
-
211
- );
212
-
213
- }
214
-
215
- }
216
-
217
-
218
-
219
- /* -- ここからわかりません -- */
220
-
221
- int k = 0;
222
-
223
- for(int i = 0; i < point2[0][0]; i++){
224
-
225
- for(int j =0; j < point1[0][0]; j++){
226
-
227
- if(epoint1[i][0] == epoint2[j][0] && epoint1[i][1] == epoint2[j][1] && epoint1[i][3] == epoint2[j][3] ){
228
-
229
- printf("match\n");
230
-
231
- }
232
-
233
- else{
234
-
235
- k = k + 1;
236
-
237
- ecomb2[k][0] = epoint2[j][0];
238
-
239
- ecomb2[k][1] = epoint2[j][1];
240
-
241
- ecomb2[k][2] = epoint2[j][2];
242
-
243
- }
244
-
245
- }
246
-
247
- }
248
-
249
-
250
-
251
- fprintf(writef_in,"%8d\n", k);//確認用
252
-
253
- for(int i = 0; i < k; i++){
254
-
255
- fprintf(writef_in,"%24.13E%24.13E%24.13E\n",
256
-
257
- ecomb2[i][0], ecomb2[i][1], ecomb2[i][2]
258
-
259
- );
260
-
261
- }
262
-
263
- /* -- ここまでわかりません -- */
264
-
265
-
266
-
267
- //ファイルをclose
268
-
269
- fclose(readf_in1);
270
-
271
- fclose(readf_in2);
272
-
273
- fclose(writef_in);
274
-
275
- }
276
-
277
- ```
278
10
 
279
11
  ### ファイルのフォーマット
280
12
 

4

in.datの修正

2021/01/20 07:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -372,28 +372,36 @@
372
372
 
373
373
  ```dat
374
374
 
375
- 9 5 0 0 1.000E+03
375
+ 12 8 0 0 1.000E+03
376
-
376
+
377
- 1 2 3 4 5 6 7 8
377
+ 1 2 3 4 5 6 1 2
378
-
378
+
379
- 9 1 2 3 4 5 6 7
379
+ 3 4 5 6 7 3 5 8
380
+
380
-
381
+ 9 6 10 11 12 7 3 5
382
+
383
+ 8 9 6 10 11 12 7 3
384
+
385
+ 11 11 11
386
+
381
- 8 9 1 2
387
+ 12 12 12
388
+
389
+ 13 13 13
390
+
391
+ 14 14 14
392
+
393
+ 15 15 15
394
+
395
+ 16 16 16
382
396
 
383
397
  21 21 21
384
398
 
385
- 13 13 13
386
-
387
- 15 15 15
388
-
389
399
  22 22 22
390
400
 
391
401
  23 23 23
392
402
 
393
403
  24 24 24
394
404
 
395
- 16 16 16
396
-
397
405
  25 25 25
398
406
 
399
407
  26 26 26

3

コードの修正

2021/01/16 13:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  //readfは読み込むファイル,writefは書き込むファイル
26
26
 
27
- FILE *readf_in1, *readf_in2, *writef_in, *writef_sin;
27
+ FILE *readf_in1, *readf_in2, *writef_in;
28
28
 
29
29
 
30
30
 
@@ -100,10 +100,6 @@
100
100
 
101
101
  fclose(readf_in2);
102
102
 
103
- fclose(readf_sin1);
104
-
105
- fclose(readf_sin2);
106
-
107
103
  printf("error in.dat\n");
108
104
 
109
105
  exit(1); //強制終了

2

サンプルファイルの追加

2021/01/16 10:10

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -316,70 +316,90 @@
316
316
 
317
317
  ```
318
318
 
319
- ### in.dat1(入力ファイル)
319
+ ###### in.dat1(入力ファイル)
320
320
 
321
321
  ```dat
322
322
 
323
- 18 24 0 0 1.000E+03
324
-
325
- 1 4 3 10 10 4 3 12
326
-
327
- 10 4 12 13 4 8 9 13
328
-
329
- 13 8 9 17 13 17 9 18
330
-
331
- 6 8 4 15 15 8 4 13
332
-
333
- 15 8 13 17 3 4 5 12
334
-
335
- 12 4 5 13 12 13 5 14
336
-
337
- 2 6 4 11 11 6 4 15
338
-
339
- 11 15 4 13 1 2 4 10
340
-
341
- 10 2 4 11 10 11 4 13
342
-
343
- 4 7 5 13 13 7 5 14
344
-
345
- 13 7 14 16 4 9 7 13
346
-
347
- 13 9 7 16 13 9 16 18
348
-
349
- -1.234500000000E+01 -1.234500000000E+01 0.000000000000E+00
350
-
351
- 0.000000000000E+00 -1.234500000000E+01 0.000000000000E+00
352
-
353
- -1.234500000000E+01 0.000000000000E+00 0.000000000000E+00
354
-
355
- 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00
356
-
357
- -1.234500000000E+01 1.234500000000E+01 0.000000000000E+00
358
-
359
- 1.234500000000E+01 -1.234500000000E+01 0.000000000000E+00
360
-
361
- 0.000000000000E+00 1.234500000000E+01 0.000000000000E+00
362
-
363
- 1.234500000000E+01 0.000000000000E+00 0.000000000000E+00
364
-
365
- 1.234500000000E+01 1.234500000000E+01 0.000000000000E+00
366
-
367
- -1.234500000000E+01 -1.234500000000E+01 1.234500000000E+01
368
-
369
- 0.000000000000E+00 -1.234500000000E+01 1.234500000000E+01
370
-
371
- -1.234500000000E+01 0.000000000000E+00 1.234500000000E+01
372
-
373
- 0.000000000000E+00 0.000000000000E+00 1.234500000000E+01
374
-
375
- -1.234500000000E+01 1.234500000000E+01 1.234500000000E+01
376
-
377
- 1.234500000000E+01 -1.234500000000E+01 1.234500000000E+01
378
-
379
- 0.000000000000E+00 1.234500000000E+01 1.234500000000E+01
380
-
381
- 1.234500000000E+01 0.000000000000E+00 1.234500000000E+01
382
-
383
- 1.234500000000E+01 1.234500000000E+01 1.234500000000E+01
384
-
385
- ```in.dat2は文字数の関係で載せられませんでした。
323
+ 6 3 0 0 1.000E+03
324
+
325
+ 1 2 3 4 5 6 1 2
326
+
327
+ 3 4 5 6
328
+
329
+ 11 11 11
330
+
331
+ 12 12 12
332
+
333
+ 13 13 13
334
+
335
+ 14 14 14
336
+
337
+ 15 15 15
338
+
339
+ 16 16 16
340
+
341
+ ```
342
+
343
+ ###### in.dat2(入力ファイル)
344
+
345
+ ```dat
346
+
347
+ 9 5 0 0 1.000E+03
348
+
349
+ 1 2 3 4 5 6 7 8
350
+
351
+ 9 1 2 3 4 5 6 7
352
+
353
+ 8 9 1 2
354
+
355
+ 21 21 21
356
+
357
+ 13 13 13
358
+
359
+ 15 15 15
360
+
361
+ 22 22 22
362
+
363
+ 23 23 23
364
+
365
+ 24 24 24
366
+
367
+ 16 16 16
368
+
369
+ 25 25 25
370
+
371
+ 26 26 26
372
+
373
+ ```
374
+
375
+ ###### in.dat(出力ファイル)
376
+
377
+ ```dat
378
+
379
+ 9 5 0 0 1.000E+03
380
+
381
+ 1 2 3 4 5 6 7 8
382
+
383
+ 9 1 2 3 4 5 6 7
384
+
385
+ 8 9 1 2
386
+
387
+ 21 21 21
388
+
389
+ 13 13 13
390
+
391
+ 15 15 15
392
+
393
+ 22 22 22
394
+
395
+ 23 23 23
396
+
397
+ 24 24 24
398
+
399
+ 16 16 16
400
+
401
+ 25 25 25
402
+
403
+ 26 26 26
404
+
405
+ ```

1

誤字

2021/01/16 09:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -38,15 +38,15 @@
38
38
 
39
39
  int point2[1024][16];
40
40
 
41
- float fpoint1[1024][16];
41
+ float fpoint1[1024][4];
42
-
42
+
43
- float fpoint2[1024][16];
43
+ float fpoint2[1024][4];
44
-
44
+
45
- double epoint1[1024][16];
45
+ double epoint1[1024][3];
46
-
46
+
47
- double epoint2[1024][16];
47
+ double epoint2[1024][3];
48
-
48
+
49
- double ecomb2[1024][16];
49
+ double ecomb2[1024][3];
50
50
 
51
51
 
52
52