задачка такая удалить из файла с нечетным количеством элементов тот который находится посередине у мне прога почти готова но понять не могу в чем ошибка
program file_1;
uses crt;
var f: file of byte;
k,i,y,n,x: byte;
begin
begin
{создание файла}
randomize;
clrscr;
assign(f,'a:\aaa.bbb');
rewrite(f);
for i:=1 to 19 do
begin
n:=random(99);
write(n,' ');
end;
writeln;
close(f);
end;
{удаление среднего элемента}
begin
assign(f,'a:\aaa.bbb');
reset(f);
x:= filesize(f);
k:=((x div 2)+1);
for i:=k to (filesize(f)-1) do
begin
seek(f,i);
read(f,y);
seek(f,i-1);
write(f,y);
end;
truncate(f);
write(y,' ');
close(f);
end;
End.
1. обязательно надо с дискетой работать? или у тебя на а что-то другое привешено?
2. процитируй, пожалуйста, строчку, где идет первоначальная запись в файл. я ее не нашла...
begin
{создание файла}
randomize;
clrscr;
assign(f,'a:\aaa.bbb');
rewrite(f);
for i:=1 to 19 do
begin
n:=random(99);
write(n,' ');
end;
writeln;
close(f);
end;
я тебя что попросила сделать?
показать мне строчку, где элементы пишутся в файл.
program file_1;
uses crt;
var f: file of byte;
k,i,y,n,x: byte;
begin
begin
{создание файла}
randomize;
clrscr;
assign(f,'a:\aaa.bbb');
rewrite(f);
writeln('файл состоит из элементов:');
for i:=1 to 19 do
begin
n:=random(50);
write(f,n);
write(n,' ');
end;
writeln;
close(f);
end;
{удаление среднего элемента}
begin
assign(f,'a:\aaa.bbb');
reset(f);
x:= filesize(f);
k:=((x div 2)+1);
for i:=k to (filesize(f)-1) do
begin
seek(f,i);
read(f,n);
seek(f,i-1);
write(f,n);
end;
truncate(f);
close(f);
end;
End.
а где ты пытаешься вывести?
что именно не получается?
После Truncate делай Reset, и только потом пытайся вывести данные...
Естественно. После truncate указатель где, по-твоему? Явно ведь не на начале файла...
truncate(f);
writeln;
readln;
reset(f);
writeln('файл стал');
while not eof(f) do
begin
read(f,y);
write(y,' ');
end;
writeln;
readln;
close(f);
т.к. делал прогу по аналогии то не совсем понял что происходит вот в этом месте
for i:=k to (filesize(f)-1) do
begin
seek(f,i);
read(f,n);
seek(f,i-1);
write(f,n);
end;
Сдвигаешь на единицу все элементы файла начиная с середины, тем самым замещая (удаляя) центральный элемент..
Добавлено через 3 мин.
PS Поздравляю себя с 1000 сообщением (почти volvo догнал )