回答編集履歴
2
それぞれのファイルに重複がない場合のコードを追加
answer
CHANGED
@@ -58,4 +58,35 @@
|
|
58
58
|
1.1111000000000E+01 1.1111000000000E+01 1.1111000000000E+01
|
59
59
|
5.5555000000000E+01 5.5555000000000E+01 5.5555000000000E+01
|
60
60
|
6.6666000000000E+01 6.6666000000000E+01 6.6666000000000E+01
|
61
|
+
```
|
62
|
+
**追記**
|
63
|
+
それぞれのファイルに重複がないのなら、
|
64
|
+
1つめのファイルの内容を全部覚えておいて、
|
65
|
+
2つめのファイルの値がそこにあるかどうかをチェックすればよいでしょう。
|
66
|
+
```C
|
67
|
+
#include <stdio.h>
|
68
|
+
|
69
|
+
int main(void)
|
70
|
+
{
|
71
|
+
FILE *f1 = fopen("f1.txt", "r");
|
72
|
+
if (!f1) return 1;
|
73
|
+
FILE *f2 = fopen("f2.txt", "r");
|
74
|
+
if (!f2) return 2;
|
75
|
+
FILE *f3 = fopen("f3.txt", "w");
|
76
|
+
if (!f3) return 3;
|
77
|
+
int point1[1][1] = { 4 }, point2[1][1] = { 3 };
|
78
|
+
double ep[1024][3], p[3];
|
79
|
+
int n = 0, i;
|
80
|
+
for (; n < 1024 && fscanf(f1, "%lf%lf%lf", ep[n], ep[n]+1, ep[n]+2) == 3; n++)
|
81
|
+
fprintf(f3, "%24.13E%24.13E%24.13E\n", ep[n][0], ep[n][1], ep[n][2]);
|
82
|
+
if (n == 1024) { puts("too many data"); return 4; }
|
83
|
+
|
84
|
+
while (fscanf(f2, "%lf%lf%lf", p, p+1, p+2) == 3) {
|
85
|
+
for (i = 0; i < n; i++)
|
86
|
+
if (ep[i][0] == p[0] && ep[i][1] == p[1] && ep[i][2] == p[2]) break;
|
87
|
+
if (i == n)
|
88
|
+
fprintf(f3, "%24.13E%24.13E%24.13E\n", p[0], p[1], p[2]);
|
89
|
+
}
|
90
|
+
fclose(f1), fclose(f2), fclose(f3);
|
91
|
+
}
|
61
92
|
```
|
1
コードの修正
answer
CHANGED
@@ -9,8 +9,7 @@
|
|
9
9
|
if (n >= 1024) { puts("too many data"); exit(1); }
|
10
10
|
for (int i = 0; i < 3; i++) e[n][i] = p[i];
|
11
11
|
for (int i = 0; i < n; i++)
|
12
|
-
if (e[i][0] == p[0] && e[i][1] == p[1] && e[i][2] == p[2])
|
12
|
+
if (e[i][0] == p[0] && e[i][1] == p[1] && e[i][2] == p[2]) return 0;
|
13
|
-
return 0;
|
14
13
|
return 1;
|
15
14
|
}
|
16
15
|
|
@@ -21,7 +20,7 @@
|
|
21
20
|
FILE *f2 = fopen("f2.txt", "r");
|
22
21
|
if (!f2) return 2;
|
23
22
|
FILE *f3 = fopen("f3.txt", "w");
|
24
|
-
if (!f3) return
|
23
|
+
if (!f3) return 3;
|
25
24
|
int point1[1][1] = { 4 }, point2[1][1] = { 3 };
|
26
25
|
double epoint[1024][3], p[3];
|
27
26
|
int n = 0;
|