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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 11:01   #1
Valja
 
Регистрация: 09.05.2011
Сообщений: 4
По умолчанию Добавить элемент в типизированный файл и его с отсортировать

Добавление элемента в типизированный файл. (с сортировкой). Добавление элементов сделано, а как сделать сортировку не знаю, голову уже сломала.
Valja вне форума Ответить с цитированием
Старый 09.05.2011, 11:30   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

на форуме сортировка решалась МНОГОКРАТНЕЙШЕ!

сходите, например, в эту тему и посмотрите мои посты (начиная с поcт #6 )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.05.2011, 14:59   #3
Valja
 
Регистрация: 09.05.2011
Сообщений: 4
По умолчанию

Возможно ли без массива отсортировать типизированный файл???Если да, то каким образом?
Valja вне форума Ответить с цитированием
Старый 09.05.2011, 17:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Возможно ли без массива отсортировать типизированный файл???Если да, то каким образом?
можно.

I.
Третий том Д.Кнута. "Сортировка и поиск"
смотреть алгоритмы "ВНЕШНИХ СОРТИРОВОК"

только прошу учесть. что
1) чтение файла в оперативную память всё равно потребуется.
2) алгоритмы эти достаточно сложны, трудоёмки и малоэффективны.

II.
А чем сортировка через массив не устраивает?!

Кроме того, как вариант - используйте динамические структуры (хотя бы те же связные списки)...


III.
В конце концов, если Вам глубоко плевать не эффективность,
то, извольте: можно использовать тот факт, что типизированные файлы - это файлы ПРЯМОГО доступа.
поэтому можно так (пишу прямо здесь, поэтому прошу за опечатки/неточности не корить):
Код:
  {сортировка типизированного файла f напрямую методом простых обменов ("пузырька") }
  CountRecN := FileSize(f);
  for i:=1 to CountRecN-1 do begin
    Seek(f,i-1);
    Read(f, Rec_I);
    for j:=i+1 to CountRecN do begin
      Seek(f,j-1);
      Read(f, Rec_J);      
      if Rec_I.Field4Sort > Rec_J.Field4Sort  then
        begin
          Seek(f, i-1);
          Write(f, Rec_J);
          Seek(f, j-1);
          Write(f, Rec_I);
          Rec_I := Rec_J; 
        end;
    end;
p.s. категорически не рекомендую данный способ использовать в целях иных, как написать код и спихнуть работу преподавателю! seek-и по файлу более чем N в квадрате, постоянные многочисленные операции записи в файл в произвольные места, при любой ошибке ввода-ввыода потеря данных (что-то не прочиталось, что-то не записалось)...
Брррр, жуть, короче!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.05.2011, 18:51   #5
Valja
 
Регистрация: 09.05.2011
Сообщений: 4
По умолчанию

Спасибо большое, эффективность мне не надо, как бы это не звучало грубовато, сдать и забыть))))
Valja вне форума Ответить с цитированием
Старый 09.05.2011, 19:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

воля ваша...
Так Вы не ответили,
а чем Вас не устраивает решение через массив?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить файл и из его выводить в memo любую строку. misher Общие вопросы Delphi 9 06.02.2014 21:40
Типизированный файл file of integer (добавить в конец файла копии положительных чисел) (Delphi) phasha Паскаль, Turbo Pascal, PascalABC.NET 8 17.04.2011 15:50
Найти наибольший и наименьший элемент в каждой строке матрицы. Отсортировать... (Паскаль) Tifa Помощь студентам 0 27.01.2011 23:07
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] mifomen Помощь студентам 7 16.12.2010 22:00
Добавить элемент в массив увеличив его размерность Yura_n Общие вопросы C/C++ 3 05.12.2009 18:09