Работа с файлами - Free Pascal (88)

Узнай цену своей работы

Формулировка задачи:

Требуется открыть файл для чтения считать 1 строку и занести в 4 обьявленные переменные значения ( например x=4.35 одна переменная ,y=12.421 вторая z=0.34 третья и v=134.35 четвретая) выполнить с ними вычисление и заменить старую строку на новою. Далее читать 2 строку занести знач переменных в 4 переменных (x,y,z,v)выполнить с ними вычисление и заменить старую строку на новою. и так далее до конца файла. Инф в файле в формате : 4.35,12.421,0.34,134.35 7.31,72.521,0.38,141.30
Program File_f1;
var
f1 : file of real;{файловая переменная }
 m: char
st,s: string;
x,y,z,v,k: real;
begin
writeln('Введите путь к файлу file.dat');
readln(s);
assign(ff,s);  {связать с файлом file.dat файловую переменную f1  }
reset(ff);    {открытие файла для чтения}
Seek(f1, 0) {устанавливам указатель на начало файла}
while not eof (f1) do { пока не конец файла  f1}
begin
 {
 
 тут ступр
 
 }
 
end;
close (f1); { закрыть файл  для чтения}
end .

Решение задачи: «Работа с файлами»

textual
Листинг программы
var f: file of real;
    i: longword;
    x, y, z, v, w: real;
begin
  assign(f, 'file.dat');
  reset(f); {открытие файла для ЧТЕНИЯ И ЗАПИСИ, если файла ещё нет, здесь будет ошибка}
//  writeln('Содержимое файла:');} {для контрольной печати}
  for i := 0 to filesize(f) div 4 - 1 do {читаем по 4 переменных}
    begin
      seek(f, i * 4); {на позицию, кратную 4}
      read(f, x); {читаем 4 переменных}
      read(f, y);
      read(f, z);
      read(f, v);
//      writeln(x:19, ' ', y:19, ' ', z:19, ' ', v:19);} {для контрольной печати}
      w := x + y + z + v; {производим какое-то действие}
      seek(f, i); {на позицию, кратную 1}
      write(f, w) {пишем в файл (и затираем то, что было в этой позиции!)}
    end;
  truncate(f); {обрезаем файл с позиции, следующей за последней записью}
{для контрольной печати}
{  reset(f); 
  writeln('Преобразованный файл:');
  for i := 0 to filesize(f) - 1 do
    begin
      read(f, x);
      write(x:19, ' ')
    end;
}
  close(f);
//  readln {для контрольной печати}
end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • f: файловый указатель типа file of real;
    • i: переменная типа longword;
    • x, y, z, v, w: переменные типа real.
  2. Файл 'file.dat' создан или открыт для чтения и записи с помощью функции assign(f, 'file.dat').
  3. Файл открыт для чтения и записи с помощью функции reset(f).
  4. Переменная i инициализируется значениями от 0 до filesize(f) div 4 - 1 (для чтения 4 переменных).
  5. В цикле for происходит чтение 4 переменных с помощью функций seek(f, i * 4) и read(f, x), read(f, y), read(f, z), read(f, v).
  6. Производится какое-то действие - сумма переменных x, y, z, v присваивается переменной w.
  7. Переменная i используется для позиционирования в файле с помощью функции seek(f, i).
  8. В позицию i записывается значение переменной w с помощью функции write(f, w).
  9. Файл обрезается с помощью функции truncate(f) до последней записи.
  10. Для контроля печати выводится содержимое файла до преобразования и после.
  11. Файл закрывается с помощью функции close(f).
  12. Для контроля печати выводится содержимое файла после преобразования.
  13. Ввод-вывод данных осуществляется с помощью функций readln и writeln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5