Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program prog;
- type
- arr = array[1..1] of real;
- pArr = ^arr;
- var
- myArray: pArr;
- myFile: file of real;
- myInput: file of real;
- tempVar: real;
- buff: real;
- i: integer;
- mem: integer;
- backup: integer;
- procedure fillFile;
- var
- i: Integer;
- begin
- for i := -5 to 10 do begin
- write(myFile, i * 0.1); // Умножая целое число на дробное, мы демонстрируем, что используются и дробные числа
- end;
- end;
- procedure removeElement(num: integer);
- var
- i: Integer;
- buff: real;
- begin
- seek(myFile,num-1);
- for i:=num-1 to filesize(myFile)-2 do
- begin
- seek(myFile, i+1);
- read(myFile, buff);
- seek(myFile, i);
- write(myFile, buff);
- end;
- seek(myFile,filesize(myFile)-1);
- truncate(myFile);
- end;
- procedure print;
- var
- localFile: file of real;
- variable: real;
- begin
- assign(localFile, 'dataFile');
- reset(localFile);
- if(EOF(localFile)) then
- exit;
- writeln('Содержимое файла:');
- repeat
- read(localFile, variable);
- writeln(variable: 1:3);
- until EOF(localFile);
- close(localFile);
- end;
- procedure printArray;
- var
- j: integer;
- begin
- writeln('Удалённые элементы:');
- for j := 1 to i do
- writeln(myArray^[j]:1:3);
- end;
- begin
- i := 0;
- assign(myFile, 'dataFile');
- rewrite(myFile);
- fillFile;
- mem := filesize(myFile);
- close(myFile);
- print;
- reset(myFile);
- writeln('Ввод числа для сравнения:');
- readln(buff);
- repeat
- read(myFile, tempVar);
- //writeln('COMP: ', abs(tempVar):1:3, ' <? ', buff:1:3); Отладка
- if(abs(tempVar) < buff) then begin
- if(myArray = nil) then begin
- getmem(myArray, mem * sizeof(real)); // Выделяем памяти объёмом, которого с гарантией хватит для хранения всех чисел
- end;
- inc(i);
- myArray^[i] := tempVar;
- //writeln('REMOVE:', tempVar:1:3); // Вывод для отладки удаления
- backup := filepos(myFile);
- removeElement(filepos(myFile));
- seek(myFile, backup);
- if(filesize(myFile) <> 0) then begin
- seek(myFile, filepos(myFile) - 1); // Иначе пропускаем следующий за удаляемым элементом
- end;
- end;
- until EOF(myFile);
- close(myFile);
- print;
- printArray;
- freemem(myArray, mem * sizeof(real));
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement