Форум программистов, компьютерный форум CyberForum.ru

Выполнить функции в случайном порядке - C++

Восстановить пароль Регистрация
 
QVO
 Аватар для QVO
636 / 447 / 32
Регистрация: 26.10.2010
Сообщений: 1,261
Записей в блоге: 4
Завершенные тесты: 2
18.04.2014, 22:00     Выполнить функции в случайном порядке #1
Допустим есть 5 функций

C++
1
2
3
4
5
void foo1() { cout << "1" << endl; }
void foo2() { cout << "2" << endl; }
void foo3() { cout << "3" << endl; }
void foo4() { cout << "4" << endl; }
void foo5() { cout << "5" << endl; }
Каким образом можно запрограммировать их выполнение в случайном порядке?
Например:
1 тест выполнится 2, 3, 1, 4, 5
2 тест выполнится 1, 5, 3, 2, 4
и т. д.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
18.04.2014, 22:05     Выполнить функции в случайном порядке #2
Вектор указателей на функцию создай. Дальше в цикле рандомно выбирается функция, выполняется и удаляется из вектора.
QVO
 Аватар для QVO
636 / 447 / 32
Регистрация: 26.10.2010
Сообщений: 1,261
Записей в блоге: 4
Завершенные тесты: 2
18.04.2014, 22:09  [ТС]     Выполнить функции в случайном порядке #3
Бендерродригез, а если функции имеют разное количество параметров, или являются методами разных классов?
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
18.04.2014, 22:30     Выполнить функции в случайном порядке #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если все функцтюии принимают одинаковое кол-во параметров, то вот интересный способ:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
 
void foo1(){
 std::cout << "1";
}
 
void foo2(){
 std::cout << "2";
}
 
void foo3(){
 std::cout << "3";
}
 
void foo4(){
 std::cout << "4";
}
 
int main(){
 srand(time(0));
 std::vector<void(*)()> v;
 v.push_back(foo1);
 v.push_back(foo2);
 v.push_back(foo3);
 v.push_back(foo4);
 
 void (*call)() = v[rand()%5];
 call();
}

Но можно и банально switch. Получаете рандомное яисло и в switch его, а в разных case вызовы функции.
QVO
 Аватар для QVO
636 / 447 / 32
Регистрация: 26.10.2010
Сообщений: 1,261
Записей в блоге: 4
Завершенные тесты: 2
19.04.2014, 00:59  [ТС]     Выполнить функции в случайном порядке #5
MastAKK, для свитча нужно создавать доп. массив с индексами функций, которые уже запускались. Лучше делать как сказал Бендерродригез -- удалять с вектора использованную функцию.
Yandex
Объявления
19.04.2014, 00:59     Выполнить функции в случайном порядке
Ответ Создать тему
Опции темы

Текущее время: 03:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru