program p178692;
// RFPRO, lamed, ABC
// 1) Описать процедуру изменения порядка следования записей в файле
// вещественных чисел на обратный порядок
// 3) Описать процедуру замены в файле вещественных чисел записи с заданным
// номером на заданное вещественное число
uses
crt;
type
TRealFile = file of real;
procedure FileCreate(var f: TRealFile; fname: string);
// Создание файла, ввод с клавиатуры
var
ans : char;
x: real;
begin
rewrite(f);
repeat
write('Число ');
readln(x);
write(f,x);
write('Продолжать д/н ');
readln(ans);
until not(ans in ['д', 'Д']);
close(f)
end; { FileCreate }
procedure FilePrint(f: TRealFile);
// печать файла
var
WasPrinted: boolean; // печатаем запятую перед каждым числом, начиная со 2-го
x: real;
begin
WasPrinted := false;
reset(f); // открыть файл
write('<');
while not eof(f) do
begin
read(f,x);
if WasPrinted then
write(',')
else
WasPrinted := true;
write(x)
end;
writeln('>');
close(f);
end;
procedure Reverse(var f: TRealFile);
// Изменение порядка следования записей в файле
// вещественных чисел на обратный порядок
var
i, j, n: integer;
rec1, rec2: real;
t: boolean;
begin
reset(f);
n:= filesize(f);
seek(f, 0);
for i:= 0 to n div 2 - 1 do
begin
seek(f, i);
read(f, rec1);
seek(f, n-i-1);
read(f, rec2);
seek(f, i);
write(f,rec2);
seek(f, n-i-1);
write(f,rec1);
end;
close(f);
end; { Reverse }
procedure Change(var f: TRealFile; x: real; position: integer; var code: integer);
// Замена в файле вещественных чисел записи с заданным
// номером на заданное вещественное число
var
n: integer;
begin
reset(f);
if (position < 0) or (position >= filesize(f)) then
code := -1
else
begin
seek(f, position);
write(f, x);
code := 0;
end;
close(f);
end; { Chamge }
var
f : TRealFile;
FileName : string;
position : integer;
x : real;
ChangeCode: integer;
begin //основная программа
ClrScr;
FileName := 'real.dat';
assign(f, FileName);
if not FileExists(FileName) then
FileCreate(f, FileName);
writeln('Исходный файл');
FilePrint(f);
write('Число для замены ');
readln(x);
write('Позиция для замены ');
readln(position);
change(f, x, position, ChangeCode);
if ChangeCode = 0 then
begin
writeln('После замены');
FilePrint(f);
end
else
writeln('Ошибка, замена не проведена');
reverse(f);
writeln('После изменения порядка');
FilePrint(f);
end.
Исходный файл
<2.5,0>
Число для замены 3
Позиция для замены 2
Ошибка, замена не проведена
После изменения порядка
<0,2.5>
Число 1
Продолжать д/н д
Число 2.5
Продолжать д/н д
Число 3.7
Продолжать д/н д
Число 4.8
Продолжать д/н д
Число 5.5
Продолжать д/н н
Исходный файл
<1,2.5,3.7,4.8,5.5>
Число для замены 5
Позиция для замены 4
После замены
<1,2.5,3.7,4.8,5>
После изменения порядка
<5,4.8,3.7,2.5,1>
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.