ЗАДАЧА-Дан файл вещественных чисел. Получить новый файл, записав в него сначала все положительные, а затем все отрицательные компоненты.
ПРОГРАММА
Код:
program pr7;
var
SrcFile, DestFile: File of real; {файл-источник и файл-результат}
SrcFileName, DestFileName: string; {имена файлов}
nextelem: real; {следующий компонент файла}
ask: char;
procedure CreateFileOfReal;
var
i, num: word;
min, max, value, sign: real;
begin
Rewrite(SrcFile); {открываем файл на запись}
writeln('Введите количество компонентов файла '); readln(num);
writeln('Введите нижнюю границу значений '); readln(min);
writeln('Введите верхнюю границу значений '); readln(max);
{если перепутаны границы, меняем их}
if min>max then begin
value:= min;
min:= max;
max:= value;
end;
{заполняем файл значениями}
for i:=1 to num do begin
value := random*(max-min)+min;
sign := random;
if sign<=0.5 then
value := -value;
write (SrcFile, value); {запись компонента в файл}
end;
Close(SrcFile); {закрываем файл - все данные сохранены}
end;
for i:=1 to num do begin
value := random*(max-min)+min;
sign := random;
if sign>=0.5 then
value := -value;
write (SrcFile, value); {запись компонента в файл}
end;
Close(SrcFile); {закрываем файл - все данные сохранены}
end;
begin
writeln('Введите имя исходного файла '); readln(SrcFileName);
Assign(SrcFile, SrcFileName);
writeln('Нужно ли предварительно заполнить его? (д/н)'); readln(ask);
if (ask='y')or(ask='Y')or(ask='д')or(ask='Д') then
CreateFileOfReal;
writeln('Введите имя файла-результата '); readln(DestFileName);
Assign(DestFile, DestFileName);
{открываем файлы}
{$I-}
Reset(SrcFile);
{$I+}
if IOResult<>0 then begin
writeln('Ошибка: невозможно открыть исходный файл.');
exit;
end;
Rewrite(DestFile);
{собственно копирование значений}
while not EOF(SrcFile) do begin
read (SrcFile, nextelem);
write ('Следующее значение = ',nextelem:8:3);
if nextelem<0 then begin
write (DestFile, nextelem);
writeln (' - копируем');
end
else
writeln(' - не копируем');
end;
{закрываем оба файла - сохраняем данные}
Close (SrcFile);
Close (DestFile);
end.