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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 01:37   #1
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию Локальный максимум в файле.

Дан файл чисел. Нужно найти его последний локальный максимум. (лок. максимум называется елемент, который больше своих соседей)
Я так понимаю что для того чтобы найти лок. максимум нужно сначала переписать файл в одномерный массив. Подскажите, как это сделать, или как решить задачу по другому?
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 22.11.2010, 06:36   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Я так понимаю что для того чтобы найти лок. максимум нужно сначала переписать файл в одномерный массив.
КЭП тобой доволен

Цитата:
Учусь учиться
1. Читаем из файла числа и записываем их в массив;
2. Если последний элемент больше предпоследнего, то LocMax := (Length - 1), иначе п. 3, 4;
3. LocMax := 0;
4. Перебираем массив с предпоследнего (Length - 2) до второго (1). Если это число - локальный максисум ((Arr[i] > Arr[i-1]) and (Arr[i] > Arr[i+1])), то LocMax := i и выходим из цикла;
5. Result := Arr[LocMax].

Ну а если файл действительно большой, тогда читать его нужно сзаду на перед и сразу преверять.
Sibedir вне форума Ответить с цитированием
Старый 22.11.2010, 13:18   #3
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
КЭП тобой доволен


1. Читаем из файла числа и записываем их в массив;
2. Если последний элемент больше предпоследнего, то LocMax := (Length - 1), иначе п. 3, 4;
3. LocMax := 0;
4. Перебираем массив с предпоследнего (Length - 2) до второго (1). Если это число - локальный максисум ((Arr[i] > Arr[i-1]) and (Arr[i] > Arr[i+1])), то LocMax := i и выходим из цикла;
5. Result := Arr[LocMax].

Ну а если файл действительно большой, тогда читать его нужно сзаду на перед и сразу преверять.
Спасибо, кэп
То как именно найти лок. макс в массиве я понял, я не могу записать числа из файла в массив.

Пробовал делать через Val.

Код:
Var f:text;
    l,i,n,p,code:integer;
    S:string;
    a:array [1..255] of integer;
Begin
   assign(f,'file.txt'); reset(f);
read(f,s);
i:=0;
repeat
p:=pos(' ',s);
inc(i);
val(copy(s,1,p-1),a[i],code);
delete(s,1,p);
until p=0;
closefile(f);
n:=length(s);

   For i:=0 to n-1 do
     Write(a[i]);

  Readln;
End.
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 23.11.2010, 03:59   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Э-э-э, как бэ
Код:
var
  f:text;
  i, n:integer;
  a: array [1..255] of integer;
Begin
  Assign (f,'file.txt');
  reset (f);
  n := 0;
  while not EOF(f) do begin
    read(f,i);
    inc(n);
    a[n] := i;
  end;

  ...

End.
EOF - end of file
Sibedir вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ первый максимум kate311893 Помощь студентам 0 26.05.2010 14:11
максимум в диапозоне kate311893 Общие вопросы C/C++ 0 26.05.2010 14:09
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
максимум meteor Microsoft Office Excel 2 06.12.2008 13:08