
Она - последняя, и если я завтра ее сдам, поставят зачет, а вот если не сдам - начнется геморрой и т.п.
Самое смешное - друг мне помог, и я ее сделал, используя массивы. Но в чертовой методичке указано, что все слова строки хранить в массиве нельзя - можно только отдельные. Как быть?
А задача вот какая:
сравнить два файла с точностью до слов (без учета неотображаемых символов и пробелов между словами). Совпадающие слова вывести в третий файл, несовпадающие слова в четвертый, а их количества на экран.
Вот текст проги, который есть на данный момент (которая работает, но могут быть траблы при сдаче):
Код
Program Lab;
var f1,f2,f3,f4 : text;
st, nd : array[1..100] of string[20];
i, j, k : byte;
maxa, maxb : byte;
ch : char;
BEGIN
i:=1;
assign(f1,'File_1.txt');
reset(f1);
While not EOF(f1) do
begin
read(f1,ch);
if (ch <> #13) and (ch <> ' ') then
begin
if ch<>#10 then
st[i]:=st[i]+ch
end
else if st[i]<>'' then
begin
maxa:=i;
inc(i);
end;
end;
If (ch<>#13) and (ch<>' ') and (ch<>#10) then maxa:=i;
close(f1);
i:=1;
assign(f2,'File_2.txt');
reset(f2);
While not EOF(f2) do
begin
read(f2,ch);
if (ch<>#13) and (ch<>' ') then
begin
if ch<>#10 then
nd[i]:=nd[i]+ch
end
else if nd[i]<>'' then
begin
maxb:=i;
inc(i);
end;
end;
If (ch<>#13) and (ch<>' ') and (ch<>#10) then maxb:=i;
close(f2);
For i:=1 to maxa do
For j:=i to maxa do
If (j<>i) and (st[i]=st[j]) then st[j]:='';
For i:=1 to maxb do
For j:=i to maxb do
If (j<>i) and (nd[i]=nd[j]) then nd[j]:='';
assign(f3,'File_3.txt');
rewrite(f3);
ch:=' ';
For i:=1 to maxa do
For j:=1 to maxb do
If (st[i]=nd[j]) and (st[i]<>'') then
begin
for k:=1 to length(st[i]) do
write(f3,st[i][k]);
write(f3,ch);
st[i]:='';
nd[j]:='';
end;
close(f3);
assign(f4,'File_4.txt');
rewrite(f4);
For i:=1 to maxa do
if st[i]<>'' then
begin
for k:=1 to length(st[i]) do
write(f4,st[i][k]);
write(f4,ch);
end;
For i:=1 to maxb do
if nd[i]<>'' then
begin
for k:=1 to length(nd[i]) do
write(f4,nd[i][k]);
write(f4,ch);
end;
close(f4);
END.
var f1,f2,f3,f4 : text;
st, nd : array[1..100] of string[20];
i, j, k : byte;
maxa, maxb : byte;
ch : char;
BEGIN
i:=1;
assign(f1,'File_1.txt');
reset(f1);
While not EOF(f1) do
begin
read(f1,ch);
if (ch <> #13) and (ch <> ' ') then
begin
if ch<>#10 then
st[i]:=st[i]+ch
end
else if st[i]<>'' then
begin
maxa:=i;
inc(i);
end;
end;
If (ch<>#13) and (ch<>' ') and (ch<>#10) then maxa:=i;
close(f1);
i:=1;
assign(f2,'File_2.txt');
reset(f2);
While not EOF(f2) do
begin
read(f2,ch);
if (ch<>#13) and (ch<>' ') then
begin
if ch<>#10 then
nd[i]:=nd[i]+ch
end
else if nd[i]<>'' then
begin
maxb:=i;
inc(i);
end;
end;
If (ch<>#13) and (ch<>' ') and (ch<>#10) then maxb:=i;
close(f2);
For i:=1 to maxa do
For j:=i to maxa do
If (j<>i) and (st[i]=st[j]) then st[j]:='';
For i:=1 to maxb do
For j:=i to maxb do
If (j<>i) and (nd[i]=nd[j]) then nd[j]:='';
assign(f3,'File_3.txt');
rewrite(f3);
ch:=' ';
For i:=1 to maxa do
For j:=1 to maxb do
If (st[i]=nd[j]) and (st[i]<>'') then
begin
for k:=1 to length(st[i]) do
write(f3,st[i][k]);
write(f3,ch);
st[i]:='';
nd[j]:='';
end;
close(f3);
assign(f4,'File_4.txt');
rewrite(f4);
For i:=1 to maxa do
if st[i]<>'' then
begin
for k:=1 to length(st[i]) do
write(f4,st[i][k]);
write(f4,ch);
end;
For i:=1 to maxb do
if nd[i]<>'' then
begin
for k:=1 to length(nd[i]) do
write(f4,nd[i][k]);
write(f4,ch);
end;
close(f4);
END.