Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Delphi

Выпуск № 107
от 03.12.2002, 18:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 319
Отправлено ответов: 583
Активность: 182.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.43
URL: Пристанище неодинокого программиста
[Подробней >>]
Jadd
Статус: Профессиональный
Общий рейтинг: 141.82
[Подробней >>]
Idle Sign
Статус: Опытный
Общий рейтинг: 148.81
URL: Blind Team
[Подробней >>]
 
Vladimir
Статус: Опытный
Общий рейтинг: 110.8
Телефон: (08242) 43599 40099 раб 41255 дом
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.24
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 309. Здраствуйте, Эксперты! Подскажите алгоритм как в строковом массиве перетасовать элементы случайным о... (ответов: 3)
Вопрос № 310. Здравствуйте, Как распечатать выделенные строки, в смысле эти записи DBGrid в Отчет? Я подумал може... (ответов: 3)

Вопросов: 2, ответов: 6


 Вопрос № 309

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



Вопрос отправлен: 29.11.2002, 10:51
Отправитель: Konstantin (ka17@mail.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Здравствуйте, Konstantin!

Предлагаю "ход конём" (в прямом и переносном смысле): воспользуйся взаимно простыми числами, то есть теми, которые не имеют общих делителей, кроме единицы. Загрузив базу слов из файла, сделай следующие действия:

1. Cnt - Количество слов.
Найти такое число (обозначим его Step), которое не имело бы общих делителей с Cnt
2. N - Номер текущего слова. Установить N на произвольное значение между 0 и Cnt-1.
i - Номер шага. i := 0
3. N := (N+Step) mod Cnt. i := i+1
4. Выполныть пункт 3 до тех пор, пока не надоест или i


Этот алгоритм работает, но имеет недостаток: следующее слово достаточно предсказуемо. По-моему, его можно модифицировать так, чтобы использовалась пара чисел: шаг вперёд и шаг назад, причём оба числа взаимно простые по отношению к количеству слов (доказывать возможность или невозможность такого подхода у меня нет времени, оставляю это право Вам)


Ответ отправлен: 29.11.2002, 12:22
Отправитель: Артём Шегеда


Отвечает Jadd

Здравствуйте, Konstantin!
Интересная идея. Можно использовать механизм Randomize для работы с псевдослучайными числами. Но тут есть одно но. Существует некая вероятность того, что некоторые элементы совпадут. Вообще можно рандомно получать индекс строки. Т.е. грузить строки в буфер/массив и тп и рандомно получать ее индекс. Тасовать символы? Надо подумать.

Ответ отправлен: 29.11.2002, 16:42
Отправитель: Jadd


Отвечает Idle Sign

Здравствуйте, Konstantin!
===== Pro bono publico, no bloody panico! =====
Как вариант: в TStringList грузится содержимое файла (LoadFromFile), после с помощью генератора псевдослучайных чисел (см. рассылку Выпуск №097 за 10.11.2002, 09:10, Вопрос №258) получаем номер строки в пределах от 0 до TStringList.Count, если таковой уж имелся (см. ниже), то повторяем поиск. Работаем с этой строкой, запоминаем ее номер, для сверки "уникальости".

Ответ отправлен: 30.11.2002, 09:39
Отправитель: Idle Sign


 Вопрос № 310

Здравствуйте,
Как распечатать выделенные строки, в смысле эти записи DBGrid в Отчет? Я подумал может выделенные строки можно перекинуть в другой table или query что бы потом вывести его через quickrep. Пожалуйста, буду очень признателен вашим ответ.
СПАСИБО!!



Вопрос отправлен: 30.11.2002, 00:21
Отправитель: dude

[Следующий вопрос >>] [Список вопросов]

Отвечает Vladimir

Добрый день, dude!
Выделенная строка в DBGrid отображает запись, на которой в данный момент стоит указатель таблицы, т.е. печатать можно так:
.............
S := Table.Fields[1].Text;
Printer.Write(s); .....
Ну, или примерно так. Смысл в том, что работать надо не с DBGrid, а с таблицей.


Ответ отправлен: 30.11.2002, 12:28
Отправитель: Vladimir


Отвечает Jadd

Добрый день, dude!
Ну, в общем ты почти ответил. Можно запоминать, скажем, какое-то значение из какого-то одного поля и потом строить запрос, а на основании его - отчет. Э-самый очевидный ответ. Можно иначе, но это предоставлю тебе обдумать.

Ответ отправлен: 30.11.2002, 01:40
Отправитель: Jadd


Отвечает baldr

Приветствую Вас, dude!
Именно в Query! А из него - в отчет. Так и надо.


Ответ отправлен: 01.12.2002, 00:29
Отправитель: baldr



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (30)
Perl (7)
Delphi (18)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (14)
PHP (8)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (24)
"Железо" (29)
Поиск информации (16)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (18)
Юристу
Гражданское право (9)
Семейное право (3)
Трудовое право (5)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное