Цитата:
Сообщение от wildfires
Можете помочь с одной программой ?
Есть два файла j,f со случайным количеством строк. Например если в файле j строк больше, нужно перенести лишнии строки с конца в файл f, что бы строк в обоих файлах было поровну. Или наоборот. Паскаль.
Заранее спасибо.
|
Не слишком изящно, но работает. Имена, содержимое и расположение исходных файлов можете, конечно, поставить свои.
Код:
VAR
Name1,Name2,Name,S:String;
f1,f2,f3:Text;
Nst1,Nst2,Nst,i:Word;
BEGIN
Name1:='D:\text1.txt';
Name2:='D:\text2.txt';
Assign(f1,Name1);
ReSet(f1);
Assign(f2,Name2);
ReSet(f2);
Nst1:=0;
Nst2:=0;
Repeat
Inc(Nst1);
Readln(f1,S);
Until EoF(f1);
Repeat
Inc(Nst2);
Readln(f2,S);
Until EoF(f2);
Close(f1);
Close(f2);
If Nst1<Nst2 then
begin
Name:=Name1;
Name1:=Name2;
Name2:=Name;
Nst:=Nst1;
Nst1:=Nst2;
Nst2:=Nst;
end;
Assign(f1,Name1);
ReSet(f1);
Assign(f2,Name2);
Append(f2);
Name:='D:\text3.txt';
Assign(f3,Name);
ReWrite(f3);
For i:=1 to ((Nst1+Nst2) div 2) do
begin
readln(f1,S);
writeln(f3,S);
end;
For i:=((Nst1+Nst2) div 2)+1 to Nst1 do
begin
readln(f1,S);
writeln(f2,S);
end;
Close(f1);
ReWrite(f1);
Close(f3);
ReSet(f3);
For i:=1 to ((Nst1+Nst2) div 2) do
begin
readln(f3,S);
writeln(f1,S);
end;
Close(f1);
Close(f2);
Close(f3);
Erase(f3);
END.