В общем задачка... Ввести файл F целых чисел и выдать его на печать. Удалить из него все компоненты, равные нулю (вспомагательный файл не использовать). Решите плз, очень прошу...
то есть сам хоть какие-то усилия предпринять ты не готов?..
Честно отвечу, что нет... но очень надеюсь на вашу помощь...
Записываешь в файл и вектор одновременно, выводишь из файла, удаляешь из вектора нули, стираешь содержимое файла, записываешь из вектора, например. А еще лучше сразу с условием записывать в вектор только ненулевые элементы. Тут делов на 2 минуты
Lapp
Пусть текстовый Я не могу представить файл на 2 гига на деле
Ну а какие тогда структуры использовать? Я не встречался с подобным переполнением.
А никакие . Только сам файл.
Можно, например, так:
var
f:file of integer;
i,j,k,s:LongInt;
z:boolean;
begin
Assign(f,'t');
ReSet(f);
i:=0;
j:=0;
z:=false;
s:=FileSize(f);
while j<s do begin
Seek(f,j);
Read(f,k);
if k<>0 then begin
if z then begin
Seek(f,i);
Write(f,k)
end;
Inc(i)
end
else z:=true;
Inc(j);
end;
Seek(f,i);
Truncate(f);
Close(f)
end.
Отлично! Забыл про truncate Единственное, что мне не нравится - то, что файл может увеличиться, например, вдвое, принимая во внимание огромные размеры, это может вызвать определенные проблемы. Я бы предложил делать проверку не на ненулевые элементы, а на нулевые, тогда вероятность того, что файл увеличится вдвое, будет меньше.