Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Типизированные файлы

Автор: tlotr 16.04.2005 23:39

Подскажите пожалуйста!
Как лучше решить эту задачку: с массивами или можно как-то попроще?
Задача: дан файл F типа Fint (type Fint: fyle of Integer), описать процедуру Max(F), которая находит max элемент в нем, а затем отсекает ту часть файла, которая следует за max.

Автор: Altair 16.04.2005 23:43

Зачем нужен массив?
откываем файл.
читаем каждый элемент, и находя каждый раз наибольший, охраняем текущую позицию в файле.
Потом пройдя весь файл и найдя макс. элемент , перемещаемся на максимальныйи начиная после него запихиваем вновый файл. Потом старый стираем а новый переименовываем.
Все. никаких массивов.

Автор: volvo 17.04.2005 0:03

Жестоко blink.gif

Цитата(Oleg_Z @ 16.04.05 19:43)
... Потом пройдя весь файл и найдя макс. элемент , перемещаемся на максимальный и...

До этого момента - все правильно. Все, что нужно сделать далее:
Truncate(f)

;) И никаких переписываний (и переименований файлов)...

Автор: Altair 17.04.2005 0:06

нет, ты не прочель условие, емунадо наоборот усечь не конец а начало

Автор: Altair 17.04.2005 0:07

а, блин да, это я ошибся.
Тогда Truncate и все

Автор: volvo 17.04.2005 0:07

Цитата
затем отсекает ту часть файла, которая следует за max
blink.gif

да, да, понял уже smile.gif я читал быстро и подумал что надо после.
А то слишком просто выходит.
Олег.