ОЕ
Ольга Елохина

помогите разобраться в программе паскаль

код программы
program laba3;
var a,b,i,left,right,k:integer;
f:file of integer;
begin
cls;
assign(f,'1.dat');
writeln('введите первую компоненту файла f: (признак конца ввода "555")');
{_____________________________________________________________}
//ввод файла
rewrite(f);
readLn(b);
i:=1;
while b<>555 do
begin
write(f,b);
inc(i);
write('введите ',i,'-й элемент файла f = ');
readLn(b);

end;

{__________________________________________________}
//вывод файла
reset(f);
writeLn('файл до изменения');
writeln;
while not EOF(f) do
begin
read(f,b);
write(b:5);
end;
writeln;
writeln;

{_______________________________________________}
//отзеркаливание компонент файла
i:=0;
while not eof(f) do
begin
i:=i+1;
end;
k:=i;
left:=k;
right:=filesize(f)-1;
while left < right do
begin
seek(f,left);
read(f,b);
seek(f,right);
read(f,a);
seek(f,left);
write(f,);
seek(f,right);
write(f,b);
left:=left+1;
right:=right-1;

end;

//вывод преобразованного массива
reset(f);
writeln('файл f после изменения');
writeln;
while not EOF(f) do
begin
read(f,b);
write(b:5);
end;
writeln;
close(f);
end.

мне нужно ввести файл вывести исходник а потом отзеркалить и вывести новый, проблемма в том что он выводит переделанный файл а не дозаписанный, например:

входные данные:
12345
выходные:
54321
а надо:
1234554321
в этом проблемма
и еще пожалуйста, кто шарит, объясните мне как работает кусок программы на переворот, так как я его писал не сам, а взаимствовал вот он:
while left < right do
begin
seek(f,left);
read(f,b);
seek(f,right);
read(f,a);
seek(f,left);
write(f,);
seek(f,right);
write(f,b);
left:=left+1;
right:=right-1;

end;
заранее спасибо.

дополнительных файлов и массивов использовать нельзя (

append не открывает этот файл, пишет что эта функция не подходит для типизированных файлов

Roman Sikorsky, спасибо, помогло!!!)) )

Назира
Назира

открывайте файл с помощью Append

просто таскает указатели то влево то вправо и меняет значение
потом сдвигает их в центр пока не пересекутся

АМ
Александр Макаров

По-моему, ты перестарался. Все гораздо проще.
В этом месте попробуй так:

//отзеркаливание компонент файла
i:=filesize(f)-1; // i указывает последнюю компоненту, в цикле будет уменьшаться
while i>=0 do
begin
seek(f,i);
read(f,b);
seek(f,filesize(f)); // перемещение в конец файла для дозаписи в него
write(f,b);
i:=i-1;
end;
close(f);

Похожие вопросы
помогите разобраться с программой на паскале! пожалуйста!
Помогите с программой на паскаль
помогите с программой на паскале
Помогите разобрать программу на паскале на циклы
Помогите с программой на паскаль!
Помогите с программой в паскале
Программа на паскале помогите
Помогите с программой Паскаля
Помогите, пожалуйста.. . разобраться с Паскалем
Помогите разобраться с уравнением в Паскале!