回答編集履歴

2

それぞれのファイルに重複がない場合のコードを追加

2021/01/14 15:23

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -119,3 +119,65 @@
119
119
  6.6666000000000E+01 6.6666000000000E+01 6.6666000000000E+01
120
120
 
121
121
  ```
122
+
123
+ **追記**
124
+
125
+ それぞれのファイルに重複がないのなら、
126
+
127
+ 1つめのファイルの内容を全部覚えておいて、
128
+
129
+ 2つめのファイルの値がそこにあるかどうかをチェックすればよいでしょう。
130
+
131
+ ```C
132
+
133
+ #include <stdio.h>
134
+
135
+
136
+
137
+ int main(void)
138
+
139
+ {
140
+
141
+ FILE *f1 = fopen("f1.txt", "r");
142
+
143
+ if (!f1) return 1;
144
+
145
+ FILE *f2 = fopen("f2.txt", "r");
146
+
147
+ if (!f2) return 2;
148
+
149
+ FILE *f3 = fopen("f3.txt", "w");
150
+
151
+ if (!f3) return 3;
152
+
153
+ int point1[1][1] = { 4 }, point2[1][1] = { 3 };
154
+
155
+ double ep[1024][3], p[3];
156
+
157
+ int n = 0, i;
158
+
159
+ for (; n < 1024 && fscanf(f1, "%lf%lf%lf", ep[n], ep[n]+1, ep[n]+2) == 3; n++)
160
+
161
+ fprintf(f3, "%24.13E%24.13E%24.13E\n", ep[n][0], ep[n][1], ep[n][2]);
162
+
163
+ if (n == 1024) { puts("too many data"); return 4; }
164
+
165
+
166
+
167
+ while (fscanf(f2, "%lf%lf%lf", p, p+1, p+2) == 3) {
168
+
169
+ for (i = 0; i < n; i++)
170
+
171
+ if (ep[i][0] == p[0] && ep[i][1] == p[1] && ep[i][2] == p[2]) break;
172
+
173
+ if (i == n)
174
+
175
+ fprintf(f3, "%24.13E%24.13E%24.13E\n", p[0], p[1], p[2]);
176
+
177
+ }
178
+
179
+ fclose(f1), fclose(f2), fclose(f3);
180
+
181
+ }
182
+
183
+ ```

1

コードの修正

2021/01/14 15:23

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -20,9 +20,7 @@
20
20
 
21
21
  for (int i = 0; i < n; i++)
22
22
 
23
- if (e[i][0] == p[0] && e[i][1] == p[1] && e[i][2] == p[2])
23
+ if (e[i][0] == p[0] && e[i][1] == p[1] && e[i][2] == p[2]) return 0;
24
-
25
- return 0;
26
24
 
27
25
  return 1;
28
26
 
@@ -44,7 +42,7 @@
44
42
 
45
43
  FILE *f3 = fopen("f3.txt", "w");
46
44
 
47
- if (!f3) return 2;
45
+ if (!f3) return 3;
48
46
 
49
47
  int point1[1][1] = { 4 }, point2[1][1] = { 3 };
50
48