5 / 5 / 2
Регистрация: 11.03.2012
Сообщений: 103
1

Работа с файлами

16.10.2016, 13:57. Показов 4116. Ответов 4
Метки нет (Все метки)

Требуется открыть файл для чтения считать 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
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 .
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2016, 13:57
Ответы с готовыми решениями:

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows...

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала...

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными...

4
Модератор
9530 / 4858 / 3229
Регистрация: 17.08.2012
Сообщений: 15,197
16.10.2016, 17:26 2
Так какой файл нужен по заданию? Если текстовый, то seek к нему применять нельзя, и нельзя записать новую строку на место старой, и чего он описан как типизированный, если типизированный - то почему Вы говорите о строках? Я так понимаю, типизированный всё же нужен, так? И не строки имеются ввиду, а четыре подряд идущих элемента файла, так? Если всё так, то считать ли файл уже существующим, или создать его по ходу программы? Типизированный файл блокнотом не сделаешь.
0
5 / 5 / 2
Регистрация: 11.03.2012
Сообщений: 103
16.10.2016, 19:33  [ТС] 3
Файл скорей всего для этой задачи наверно подходит типизированный.Считать файл уже существующим.
0
Модератор
9530 / 4858 / 3229
Регистрация: 17.08.2012
Сообщений: 15,197
16.10.2016, 21:40 4
Лучший ответ Сообщение было отмечено va1n4a как решение

Решение

Вполне рабочий пример:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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.
Лучше использовать не отдельные переменные, а массив. Если файла ещё нет,сформировать его, например, так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var f: file of real; {файловая переменная}
    i, n: longword;
    x, y, z, v, w: real;
begin
  assign(f, 'file.dat');
  write('n = ');
  readln(n);
  rewrite(f);
  writeln('Введите элементы файла:');
  for i := 1 to n do
  begin
    write('x', i, ' = ');
    readln(x);
    write('y', i, ' = ');
    readln(y);
    write('z', i, ' = ');
    readln(z);
    write('v', i, ' = ');
    readln(v);
    write(f, x, y, z, v)
  end;
  close(f)
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7520 / 4384 / 2781
Регистрация: 22.11.2013
Сообщений: 12,545
Записей в блоге: 1
17.10.2016, 14:44 5
Для текстовых файлов только запись во временный и переименование:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  s: String;
  p, e: Integer;
  x, y, z, v: Real;
  f, g: Text;
begin
  Assign(f,'data.txt'); Reset(f);
  Assign(g,'data.tmp'); Rewrite(g);
  while not EoF(f) do begin
    ReadLn(f,s);
    p:=Pos(',',s); Val(Copy(s,1,p-1),x,e); Delete(s,1,p);
    p:=Pos(',',s); Val(Copy(s,1,p-1),y,e); Delete(s,1,p);
    p:=Pos(',',s); Val(Copy(s,1,p-1),z,e); Delete(s,1,p);
    Val(s,v,e);
    { пересчитываем x,y,z,v }
    WriteLn(g,x,',',y,',',z,',',v);
  end;
  Close(g); Close(f);
  Erase(f); Rename(g,'data.txt');
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2016, 14:44
Помогаю со студенческими работами здесь

Работа с файлами
Доброго всем времени суток. Для начала - лирическое вступление. Нужна мне была программа, которая...

Работа с файлами
Составить программу, которая читает построчно текст другой программы на языке Pascal, обнаруживает...

Работа с файлами
Дан файл f, компоненты которого являются целыми числами. Используя вспомогательный файл h,...

Работа с файлами
как записать в файл такую строку: nsd asd vsd ads и как потом прочитать из файла эту же строку


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru