Russian Qt Forum
Ноябрь 24, 2024, 19:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLinkedList перемешать список случайным образом  (Прочитано 2634 раз)
coll3ctor
Гость
« : Апрель 23, 2011, 14:26 »

Нужно вызывать функцию rand() из stlib.h, и делать так rand() % list.count() , чтобы рандомное число не превышало номера списка. И ещё нужно как то так, чтобы ето случайное число не повторилось несколько раз...

В общем алгоритм я придумал такой: создаём новый список (temp),
копируем в него старый (который у меня член класса главного окна),
старый очищаем, работаем с temp (запускаем цикл, итераторы, вся фигня)
в теле цикла вызываю функцию добавления элемента в указанную позицию, в первый аргумент передаём  rand() % list.count()
Код:
void artur :: addObjectToTable(int position, Kitap object)
{
int counter = 0 ;
QLinkedList<Kitap>::iterator listIterator   =  list.begin();
QLinkedList<Kitap>::iterator end            =  list.end();

for( ; listIterator != end; listIterator++)
{
counter++;
if(counter == position)
{
list.insert(listIterator, object);
}
}

artur::refreshTableSlot();
exercisePartTwoSet();
}

только вот когда начал реализовывать возникло куча проблем, и вообще правильны ли мои мысли.

Что скажете, господа?

update:

вот примерный код:

Код:
void artur:: randTableSlot()
{
QLinkedList<Kitap> temp = list;
list.clear();

QLinkedList<Kitap>::iterator listIterator   =  temp.begin();
QLinkedList<Kitap>::iterator end            =  temp.end();

int counter = 0;

for( ; listIterator != end; listIterator++)
{
counter++;
Kitap cD = *listIterator;
if(counter == rand() % temp.count())
{
list.insert(listIterator,cD);
}
}

statusBar()->showMessage(tr("Randomed!!!"));
}
« Последнее редактирование: Апрель 23, 2011, 14:43 от coll3ctor » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 20.