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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 22:29   #1
ZveRtheGameS
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 14
По умолчанию Хэлп, файлы в паскале

Всем привет, собственно задание:

найти максимальное число файле типа реал и найти числа , которые находятся от максимального на две позиции вперед и назад.

Буду благодарен за помощь, не могу понять данную тему...
ZveRtheGameS вне форума Ответить с цитированием
Старый 11.12.2013, 05:17   #2
ZveRtheGameS
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 14
По умолчанию

вопрос актуален
ZveRtheGameS вне форума Ответить с цитированием
Старый 11.12.2013, 10:18   #3
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Найти макс.
Код:
Var
  F:file of real;

...
Assign(f,'имяфайла');
Reset(f);
Read(f,x);
Max:=x;
While not eof(f) do
Begin
  Read(f,x);
  If x>max then
    Max:=x;
End;
...
Close(f);
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 11.12.2013, 16:24   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы попробовал примерно такой код:
Код:
Var
  F:file of real;
  x,max : real;
  i, PosMaxInFile : integer; 
begin
  Assign(f,'имяфайла');
  Reset(f);
  if FileSize(f)<1 then 
   WriteLn('File is empty! Nothing to do!')
  else begin
    PosMaxInFile := 1; {позиция максимального числа в исходном файле}
    Read(f, max);  {прочитали первое значение в переменную max}
    for i:=2 to FileSize(f) do begin
       Read(f,x);
       if x > max then begin
          max := x;            {взяли значение, как максимальное}
          PosMaxInFile ;= i; { и позицию числа запомнили}
       end;
    end;
  
    WriteLn('Max value = ',max:1:5,' position at file: ', PosMaxInFile);
    if PosMaxInFile<3 then WriteLn('Not values at 2 step before max!')
    else begin
       Seek(f, PosMaxInFile-1-2); {установим позицию в файле на два числа ранее максимального}
       Read(f,x);
       WriteLn('At 2 step in file before max value = ', x:1:5);
    end;
    if PosMaxInFile>(FileSize(f)-2) then WriteLn('Not values at 2 step after max!')
    else begin
       Seek(f, PosMaxInFile-1+2); {установим позицию в файле на два числа позже максимального}
       Read(f,x);
       WriteLn('At 2 step in file after max value = ', x:1:5);
    end;
  end;
  Close(f);
  WriteLn('DONE!! Press Enter to close program!');
  Readln;
end.

p.s. писал на форуме, естественно, не проверял, в коде могут быть опечатки и ошибки. Главное, идею уловить!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
файлы на паскале))) Nekras Помощь студентам 3 05.06.2011 17:38
Файлы в Паскале britva666 Помощь студентам 2 21.06.2009 20:28
файлы в паскале Dmitrij Помощь студентам 2 28.03.2009 20:00