Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Сортировка записей в текстовом файле   Найти похожие ветки 

 
azl ©   (2007-03-04 12:19) [0]

Здравствуйте, уважаемые мастера. Помогите, пожалуйста, решить задачу.

Есть одномерный массива А(29), элементы которого распологаются произвольным образом в диапазоне от -12 до 45. И есть одномерный массив В, сформированный из массива А. Все элементы массива В больше чем средне арифметическое массива А. Эти массивы записаны в файлы М1.TXT и M2.TXT.

Нужно сделать следующее:
Выполнить сортировку данных в файле M1.txt по возрастанию, а в файле М2.txt по убыванию. Для сортировки использовать программу типа SUB. Сортировать не элементы массивов, а записи в файлах!

Все бы было легко, если бы можно было считать файлы в массивы, выполнить сортировку в массивах и обратно записать в файлы.

 for i := 1 to n do
   for j := n downto i+1 do
     if m1[j-1] > m1[j] then
       begin
         t := m1[j-1];
         m1[j-1] := m1[j];
         m1[j] := t;
       end;


Но надо  отсортировать именно записи в файлах.

Я нашел, некоторый ответ:
"легко, если знаешь кол-во и размер каждой записи:

  заюзай какой-нибудь метод сортировки -
  при переборе значений переставляй записи в файле:
  считывай первую запись, затем вторую если некое условие, то
  переставляй их местами... делов-то.
"

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

Спасибо.


 
Рамиль_   (2007-03-04 12:57) [1]

Для файлов, насколько я помню, надо использовать сортировку слиянием.


 
Leonid Troyanovsky ©   (2007-03-04 13:27) [2]


> azl ©   (04.03.07 12:19)  

> программу типа SUB. Сортировать не элементы массивов, а
> записи в файлах!

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

--
Regards, LVT.


 
azl ©   (2007-03-04 13:42) [3]

В том то и дело, что разной. Диапазон от -12 до 45. А это может быть и -10 и -8 и 35.


 
default ©   (2007-03-04 13:44) [4]

azl ©   (04.03.07 13:42) [3]
вряд-ли ты сможешь написать сортировку слиянием
так что делай как говорят в [2]


 
azl ©   (2007-03-04 13:49) [5]

Я понимаю, а пример можно?
В принципе, в одном файле (М2.TXT) все записи одинаковой длины.


 
default ©   (2007-03-04 13:58) [6]

azl ©   (04.03.07 13:49) [5]
можешь использовать TFileStream
многие алгоритмы сортировки являются обменными, то есть в процессе сортировки они переставляют элементы сортируемого списка местами
(ну как в сабжевом примере, в пузырьке в этом галимом:))
у тебя будут просто переставляться записи в файле
для этого как понимаешь не обязательно загружать весь сортируемый список в оперативную память
просто его обычно загружают если можно, чтобы жётский диск не "дёргать" ибо это гораздо медленее чем "дёргать" оперативную память


 
azl ©   (2007-03-04 17:26) [7]

Все равно ладу не дам.


 
azl ©   (2007-03-05 17:35) [8]

А что если воспользоваться процедурой Seek?



Страницы: 1 вся ветка

Текущий архив: 2007.03.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
15-1172674025
Магедон
2007-02-28 17:47
2007.03.25
Вопрос о Skype


15-1172439246
Riply
2007-02-26 00:34
2007.03.25
Ничавойное состояние.


1-1169793749
GrayFace
2007-01-26 09:42
2007.03.25
Нормальный аналог Shell Controls


1-1170327389
vtur
2007-02-01 13:56
2007.03.25
Обмен сообщениями между приложениями


11-1151921952
Maloric
2006-07-03 14:19
2007.03.25
Как правильно вызвать chm хелп