Advertisement
dimon2242

someCode

Apr 11th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.36 KB | None | 0 0
  1. program prog;
  2. type
  3.     arr = array[1..1] of real;
  4.     pArr = ^arr;
  5. var
  6.     myArray: pArr;
  7.     myFile: file of real;
  8.     myInput: file of real;
  9.     tempVar: real;
  10.     buff: real;
  11.     i: integer;
  12.     mem: integer;
  13.     backup: integer;
  14.  
  15.  
  16. procedure fillFile;
  17. var
  18.     i: Integer;
  19. begin
  20.     for i := -5 to 10 do begin
  21.         write(myFile, i * 0.1); // Умножая целое число на дробное, мы демонстрируем, что используются и дробные числа
  22.     end;
  23. end;
  24.  
  25. procedure removeElement(num: integer);
  26. var
  27.     i: Integer;
  28.     buff: real;
  29. begin
  30.     seek(myFile,num-1);
  31. for i:=num-1 to filesize(myFile)-2 do
  32.  begin
  33.   seek(myFile, i+1);
  34.   read(myFile, buff);
  35.   seek(myFile, i);
  36.   write(myFile, buff);
  37.  end;
  38. seek(myFile,filesize(myFile)-1);
  39. truncate(myFile);
  40. end;
  41.  
  42. procedure print;
  43. var
  44.     localFile: file of real;
  45.     variable: real;
  46. begin
  47.     assign(localFile, 'dataFile');
  48.     reset(localFile);
  49.     if(EOF(localFile)) then
  50.         exit;
  51.     writeln('Содержимое файла:');
  52.     repeat
  53.         read(localFile, variable);
  54.         writeln(variable: 1:3);
  55.     until EOF(localFile);
  56.     close(localFile);
  57. end;
  58.  
  59. procedure printArray;
  60. var
  61.     j: integer;
  62. begin
  63.     writeln('Удалённые элементы:');
  64.     for j := 1 to i do
  65.         writeln(myArray^[j]:1:3);
  66. end;
  67.  
  68. begin
  69.     i := 0;
  70.     assign(myFile, 'dataFile');
  71.     rewrite(myFile);
  72.     fillFile;
  73.     mem := filesize(myFile);
  74.     close(myFile);
  75.     print;
  76.     reset(myFile);
  77.     writeln('Ввод числа для сравнения:');
  78.     readln(buff);
  79.     repeat
  80.         read(myFile, tempVar);
  81.         //writeln('COMP: ', abs(tempVar):1:3, ' <? ', buff:1:3); Отладка
  82.         if(abs(tempVar) < buff) then begin
  83.             if(myArray = nil) then begin
  84.                 getmem(myArray, mem * sizeof(real)); // Выделяем памяти объёмом, которого с гарантией хватит для хранения всех чисел
  85.             end;
  86.             inc(i);
  87.             myArray^[i] := tempVar;
  88.             //writeln('REMOVE:', tempVar:1:3); // Вывод для отладки удаления
  89.             backup := filepos(myFile);
  90.             removeElement(filepos(myFile));
  91.             seek(myFile, backup);
  92.             if(filesize(myFile) <> 0) then begin
  93.                 seek(myFile, filepos(myFile) - 1); // Иначе пропускаем следующий за удаляемым элементом
  94.             end;
  95.         end;
  96.     until EOF(myFile);
  97.     close(myFile);
  98.     print;
  99.     printArray;
  100.     freemem(myArray, mem * sizeof(real));
  101. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement