Помогите разобраться с кодом генератора массива функций

Здравствуйте, я решил написать генераторатор массива функций, для того чтобы
при запуске через определенный интервал Sleep(5000); генерировалась и воспроизводилась нужная функция, либо после каждого запуска программы запускалась новая функция, с начало генерировалась а потом запускалась. Я написал код, но не понятно как добавить рандом к массиву функций, собственно в этом и загвоздка, прошу помочь в этом вопросе, ниже привел код программы

#include <iostream>
#include <cstdio>

#define sleep Sleep(5000);
int i;
using namespace std;
void a()
{
 i = rand();
 cout << "первая функция " << endl;
 sleep
} //функция а
void b()
{
 i = rand();
 cout << "вторая функция " << endl;
 sleep
} //функция b
void c()
{
 i = rand();
 cout << "третья функция " << endl;
 sleep
} //функция с

int main()
{
void (*P[3])()={a,b,c}; //массив из 3 указателей на функции

 (*P[2])(); //обращение к элементу массива вызывает функцию
 cin.get();

return 0;
}

Генератор массива функций не получился. У тебя ничего не генерируется )) Вообще сгенерировать функцию на C++ — задачка нетривиальная (это тебе не JavaScript), хотя и выполнимая.

Следующий код осуществляет при запуске, через определенный интервал Sleep(5000) вызывается случайная функция из массива указателей на функции. Тебя такая формулировка устроит?

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>

#define sleep Sleep(5000);

using namespace std;

void a()
{
 cout << "первая функция " << endl;
} //функция а
void b()
{
 cout << "вторая функция " << endl;
} //функция b
void c()
{
 cout << "третья функция " << endl;
} //функция с

const int ARRAYSIZE = 3;

int main()
{
    void (*P[ARRAYSIZE])() = { a, b, c }; //массив из 3 указателей на функции

    srand((unsigned int)time(NULL));  // разгонка генератора случайных чисел

    for (int i = 0; i < 10; i++) {
        (*P[rand() % ARRAYSIZE])(); //обращение к элементу массива вызывает функцию
        sleep
    }
    cin.get();

    return 0;
}

Cranium, мне когда-то показывали алгоритм, только я запамятовал. Нужно чтобы при каждом запуске программы запускалась разная функция. Это как с функцией rand() она числа генерирует при каждом запуске программы, так вот, мне надо чтобы функции так же менялись рандомно после каждого запуска программы. К примеру я запускаю программу запустилась 2 функция, потом опять запускаю программу и запускается 1 функция, потом третья итд.

Cranium, проверил, спасибо огромное работает, и при запуске меняется каждый раз новая функция запускается. А ты говорил не существует генерации массива функций ).

У тебя функции НЕ генерируются. И массив функций НЕ генерируется. «Генерация» — это процесс, в начале которого некоей сущности нет, но по окончании процесса она появляется.

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

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.