![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
![]()
Подскажите как правильно решить такого рода задачу...
Есть много строк нужно вывести рандомно одну из всех, но такую, которая не выводилась при предыдущих запусках программы. первое что пришло в голову записать их в текстовый файл. при запуске читать файл в переменную. посчитать количество строк в переменной. вывести строку c номером i:=random(n)+1 удалить строку с номером i посчитать количество строк в переменной. ... вывести удалить посчитать ... при выходе из программы переписать файл. но это хорошо, когда строк не много... и весь файл можно прочитать в переменную. а если строк будет много? как быть тогда? |
![]() |
![]() |
![]() |
#2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
Если строка будет считываться 100% единажды и не более, то я б сделал в БД ещё одно поле was_read логического типа. Как прочел, ставишь галку.
Если помог, проси поставить минус. Будь оригинален!
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
![]()
я думал о чем то подобном, но...
допустим рандомить ID и проверять поле was_read тогда нужно повторять в цикле вывод пока не совпадет условие т.е. чем меньше останется записей тем больше будет интераций цикла... |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
Код:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А когда все строки исчерпаются - прога не запускается?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
![]() ![]() а если случится такая ситуация, что не выводившиеся ранее записи останутся только с ID большим чем randID? допустим 300 записей, а randID=250... а не выводились последние 50. P.S. Цитата:
![]() Последний раз редактировалось unbanned; 03.03.2014 в 13:53. |
|
![]() |
![]() |
![]() |
#7 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
я бы предложил такую схему: при запуске Код:
если cntNoRead = 1 то Код:
тот самый цикл выбора значений (можно кодом, предложенным выше, а можно, я бы лично сделал именно так, вытащить все невыпавшием номера и выбрать номер среди них) |
||
![]() |
![]() |
![]() |
#8 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
Цитата:
Код:
Код:
а если ...
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 04.03.2014 в 14:44. |
||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
![]()
я понял
![]() |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
можно продумать метод для базы. делаем глобальный селект всех записей. в каждой записи есть поле проверки выбора. рандом указывает на строку и вы выставляете в базе 1 в поле вывода. далее настраиваем фильтр бдгрида что бы не отображать строки с проверкой равной 1. (или эту единичку записать в базу и заново селект но уже с ограничением что с единичками не берём строки). и так далее пока не останется пустой набор.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Записи!RadioGroup вывод варианта | wlll | Общие вопросы Delphi | 3 | 21.04.2013 17:01 |
Рандомное значение в рандомной кнопке | konserva | Общие вопросы Delphi | 2 | 11.04.2012 16:06 |
Вывод последней записи из таблицы mysql | NapalmRain | PHP | 4 | 24.06.2011 14:41 |
Вывод поля записи | ofenod | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 30.03.2011 18:27 |
вывод записи поиска | artemi | Общие вопросы C/C++ | 3 | 24.05.2010 22:01 |