Что то никак не могу сформулировать алгоритм.
В файле целого типа расставить в обратном порядке все значения кратные 3.
звучит просто но не могу понять, как?
нужен только алгоритм, но если кто напишет прогу буду сильно благодарен.
begin
x := n;
for i := 1 to n
if a[i] mod 3 <> 0 then
b[i] := a[i];
else begin
while x mod 3 <> 0 do
Dec(x);
b[i] := a[x];
Dec(x); //сместили еще на 1 влево, чтобы в следующий раз искать дальше, а не остановится навсегда в этом месте
end;
end;
uses crt;
var
f, tmp: file of Integer;
i, n, value, right, rValue: Integer;
begin
clrscr;
randomize;
n := random(10);
assign(f, 'c:\file.int');
rewrite(f);
for i := 1 to n do begin
value := random(10);
write(f, value);
writeln(value);
end;
reset(f);
assign(tmp, 'c:\tmp.int');
rewrite(tmp);
right := filesize(f);
writeln;
for i := 0 to filesize(f) - 1 do begin
seek(f, i);
read(f, value);
if (not odd(value)) or (i = right - 1) then begin
seek(tmp, i);
write(tmp, value);
end else if i < right then begin
repeat
dec(right);
seek(f, right);
read(f, rValue);
until odd(rValue);
seek(tmp, i);
write(tmp, rValue);
seek(tmp, right);
write(tmp, value);
end;
end;
close(f);
erase(f);
close(tmp);
rename(tmp, 'c:\file.int');
reset(tmp);
writeln;
while not eof(tmp) do begin
read(tmp, value);
writeln(value);
end;
close(tmp);
readln;
end.