Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 01:02   #1
patisson74
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 17
Вопрос Работа с файлами (паскаль)

Дан файл F, компоненты которого являются вещественными числами. Найти разницу первого и последнего компонента файла F.
Вот что, не без помощи одного хорошего человека, у нас получилось:

Код:
program files_;
uses CRT;
const FileName = 'Test.dat'; {имя файла}
                  n=7; {количество компонент файла}
type Tfile=file of real; {тип файла}
var   F:Tfile;
k,l,t,j:real;
 
procedure CreateFile(var F1:TFile; n1:integer); {процедура создания файла}
var i:integer;
   k1:real;
begin
  ReWrite(F1); {открываем файл на запись}
  writeln('vvedite');
  for i:=1 to n1 do
  begin
    readln(k1);
    Write(F1,k1); {записываем в файл}
  end;
  Close(F1);
end;
 
begin 
  ClrScr;
  Assign(F,FileName); {связываем файл F с именем}
  CreateFile(F,n);
   Reset(F); {открываем файл F для чтения}
  Read(F,k); {читаем первый компонент}
  l:=k;
  Seek(F,FileSize(F)); {переходим к последнему компоненту}
  Read(F,k);
  t:=k;
  Close(F); {закрываем файл}
  j:=l-t;
  writeln('j=',j);
  readln;
end.
но что-то не так, программка не хочет работать......
Мученик - заочник
patisson74 вне форума Ответить с цитированием
Старый 15.04.2010, 01:18   #2
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
По умолчанию

Код:
program files_;
uses CRT;
const n=7; {количество компонент файла}
type Tfile=file of real; {тип файла}
var   F:Tfile;
      first,second,raz:real;

procedure CreateFile(var F:TFile; n:integer); {процедура создания файла}
var i:integer;//счетчик
    k1:real;//число компоненты
begin
Assign(F,'Test.txt'); {связываем файл F с именем}
ReWrite(F); {открываем файл на запись}
writeln('Введите компоненты файла!');
for i:=1 to n do begin
 readln(k1);Write(F,k1); {записываем в файл}end;
Close(F);//закрываем файл
end;
{основное тело программы}
begin
ClrScr;
CreateFile(F,n);
Reset(F); {открываем файл F для чтения}
Read(F,first); {читаем первый компонент}
Seek(F,FileSize(F)-1); {переходим к последнему компоненту}
Read(F,second);
raz:=first-second;
writeln('Разница =',raz);
readln;
end.
У вас были ошибки в том, что:
Цитата:
Assign(F,FileName); {связываем файл F с именем}
Close(F); {закрываем файл}
вне процедуры, но работало бы все равно...
+
Seek(F,FileSize(F)); {переходим к последнему компоненту}
нужно было Seek(F,FileSize(F)-1); {переходим к последнему компоненту}
то есть получается мы переходили к следующему за последним элементом, вот поэтому и ошибка была...
Удачи

Последний раз редактировалось Stilet; 15.04.2010 в 08:20.
CodeExpert вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, работа с файлами. Alexey_HvaranG Помощь студентам 5 07.12.2009 22:39
работа с файлами в паскаль... Оксаночка:) Помощь студентам 1 19.06.2009 09:59
работа с файлами(паскаль) WF7 Паскаль, Turbo Pascal, PascalABC.NET 2 03.06.2009 16:02
Паскаль. Работа с файлами. Fortismine Помощь студентам 3 21.05.2009 14:16