помогите пожалуйста... даны два текстовых файла с произвольным, количеством строк в каждом. Нужно: объединить их в один, причем, где первая строка - это первая строка 1-го файла, вторая - последняя строка 2-го и так дале (3 - 2 строка 1-го, 4 - предпоследняя 2-го).....я просто не представляю алгоритм для высчитывая строк, в текстовом файле..заранее спасибо за возможную помощь..
volvo
18.03.2008 15: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;
beginifnot eof(f1) thenbegin
writeln(get_s(f1));
end;
if s2 <> #26then writeln(s2);
end;
beginif eof(f2) thenbegin
sub; exit;
endelsebegin
print(get_s(f2));
end;
sub;
end;
begin
print(#26);
whilenot 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 15: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<>0thenbegin
writeln('file 1 not found');
readkey;
exit;
end;
{$I-}
reset(f2);
{$I+}if ioresult<>0thenbegin
writeln('file 2 not found');
readkey;
exit;
end;
k1:=0;
k2:=0;
d:=0;
whilenot eof(f1) dobegin
readln(f1);
k1:=k1+1;
end;
whilenot eof(f2) dobegin
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 thenbeginfor i:=1to k2-min dobegin
readln(f2,a);
gotoxy(1,min+k2+1-i);
b[min+k2+1-i]:=a;
write(a);
end;
end;
for i:=1to min dobegin
gotoxy(1,2*i-1);
readln(f1,a);
b[2*i-1]:=a;
write(a);
end;
for i:=min downto1dobegin
gotoxy(1,2*i);
readln(f2,a);
b(2*i):=a;
write(a);
end;
gotoxy(1,2*min+1);
whilenot eof(f1) dobegin
readln(f1,a);
writeln(sli,a);
writeln(a);
end;
for i:=1to d do writeln(sli,c[d]);
close(f1);
close(f2);
close(sli);
readkey;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.