помогите пожалуйста... даны два текстовых файла с произвольным, количеством строк в каждом. Нужно: объединить их в один, причем, где первая строка - это первая строка 1-го файла, вторая - последняя строка 2-го и так дале (3 - 2 строка 1-го, 4 - предпоследняя 2-го).....я просто не представляю алгоритм для высчитывая строк, в текстовом файле..заранее спасибо за возможную помощь..
volvo
18.03.2008 19:27
Объяснить, как это работает, сможешь?
function get_s(var f: text): string; var s: string; begin readln(f, s); get_s := s; end;
procedure merge_files(var f1, f2: text);
procedure print(s2: string);
procedure sub; begin
if not eof(f1) then begin writeln(get_s(f1)); end; if s2 <> #26 then writeln(s2);
end;
begin if eof(f2) then begin
sub; exit;
end else begin print(get_s(f2)); end;
sub; end;
begin print(#26); while not eof(f1) do writeln(get_s(f1)); end;
var f1, f2: text; s: string;
begin assign(f1, 'f01.txt'); reset(f1); assign(f2, 'f02.txt'); reset(f2);
merge_files(f1, f2);
close(f2); close(f1); end.
NeOOffLinE
18.03.2008 19:52
Цитата(volvo @ 18.03.2008 15:27)
procedure sub; begin
if not eof(f1) then begin writeln(get_s(f1)); end; if s2 <> #26 then writeln(s2);
end;
всё понятно кроме этого
Добавлено через 18 мин. сделано было так но сказали без массива
program sli; uses crt; var f1,f2,sli: text; c:string; k1,k2,min,s,i,d: integer; b,c:array[1..100]; begin clrscr; assign(f1,'fist.txt'); assign(f2,'second.txt'); assign(sli,'sli.txt'); rewrite(sli); {$I-} reset(f1); {$I+} if ioresult<>0 then begin writeln('file 1 not found'); readkey; exit; end; {$I-} reset(f2); {$I+} if ioresult<>0 then begin writeln('file 2 not found'); readkey; exit; end; k1:=0; k2:=0; d:=0; while not eof(f1) do begin readln(f1); k1:=k1+1; end; while not eof(f2) do begin readln(f2); k2:=k2+1; end; close(f1); close(f2); reset(f1); reset(f2); if k1<k2 then min:=k1 else min:=k2; d:=2*min+abs(k2-k1); if k2>min then begin for i:=1 to k2-min do begin readln(f2,a); gotoxy(1,min+k2+1-i); b[min+k2+1-i]:=a; write(a); end; end; for i:=1 to min do begin gotoxy(1,2*i-1); readln(f1,a); b[2*i-1]:=a; write(a); end; for i:=min downto 1 do begin gotoxy(1,2*i); readln(f2,a); b(2*i):=a; write(a); end; gotoxy(1,2*min+1); while not eof(f1) do begin readln(f1,a); writeln(sli,a); writeln(a); end; for i:=1 to d do writeln(sli,c[d]); close(f1); close(f2); close(sli); readkey; end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.