Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Перемешивание строк в файле

Автор: eNetMaster
Дата сообщения: 27.09.2008 18:24
Доброго времени,
Может кто-нибудь подсказать программу (или иной способ) перемешивания строк в файле случайным образом?
Автор: eNetMaster
Дата сообщения: 28.09.2008 13:38
Неужели никто не подскажет?
Автор: ShIvADeSt
Дата сообщения: 28.09.2008 14:25
eNetMaster
А что подсказывать - поиск программ в другом месте, здесь программирование. А насчет способа, то он примитивен, берутся все строки, считываются массив (например) или компонент TList, смотря на чем пишешь. Заносишь в переменную количество строк и начинаешь генерировать случайные числа в данном промежутке. Далее составляешь массив из целых чисел след образом, для каждого i-го элемента генерируешь число в пределах от 1 до n, где n равно текущее число строк, которые надо случайно отсортировать. Как только выпало очередное число, то исключаем соотв строку, сдвигая остальные строки на 1, так чтобы опять остались неотрандомайзенные строки.
Вот пример
Файл состоит из след строк
1.qqqqqqqqqqqq
2.wwwwwwwwww
3.eeeeeeeeeeeee
4.rrrrrrrrrrrrrrrrrr
5.ttttttttttttttttttttttt
Таким образом у нас есть массив с размерностью 5,который состоит из данных строк. Рассматриваем только номера строк
[1,2,3,4,5]
генерируем первое случайное число из 5 (ВНИМАНИЕ, генерируем индекс массива), например 4, тогда наш массив становится след вида
[1,2,3,5,4] строку номер 4 мы исключаем, так как она уже выпала, теперь генериуем число из 4, например опять 4, в этом случае четвертый элемент массива у нас 5, мы его не трогаем, но диапазон для генерации уменьшаем на 1, получаем
[1,2,3,5,4] но теперь генерируем индекс от 1 до 3, например 2, получаем
[1,3,2,5,4] и теперь последний этап генерируем индекс от 1 до 2, например 1, получаем
[3,1,2,5,4] вот мы получили случайеое расположение строк нового файла, согласно номерам строк формируем новый файл
eeeeeeeeeeeeeeee
qqqqqqqqqqqqqqqq
wwwwwwwwwwww
tttttttttttttttttttttttttttt
rrrrrrrrrrrrrrrrrrrrrr
программная реализация гораздо проще.
Автор: eNetMaster
Дата сообщения: 28.09.2008 14:58
ShIvADeSt
Если проще, то не могли бы вы привести конкретный код на Delphi?

Сам в программировании я не силен, но с этой средой в общих чертах знаком, скомпилирую.
Автор: eNetMaster
Дата сообщения: 29.09.2008 18:16
Ну что никто не поможет?
Автор: ShIvADeSt
Дата сообщения: 30.09.2008 08:29
eNetMaster
Ты ленивый ужасно, вот готовая программа с сорсами, что надо будет сам поправишь
http://rapidshare.com/files/149583383/RandomTxt.zip.html

Страницы: 1

Предыдущая тема: Visual C++ Рисование в диалоговом окне


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.