PDA

View Full Version : DEV-C++ errori compilazione random e randomize


demos88
13-12-2004, 16:19
Salve a tutti,

Ho un problema con il compilatore dev-C++:
semplicemente non riesco a compilare in modo corretto le funzioni random e randomize che non le riconosce come tali e il compilatore me le da come variabili non dichiarate.
uso le librerie conio.h stdlib.h stdio.h.

Premetto che il borland non dà alcun problema.

VICIUS
13-12-2004, 16:49
random e randomize non sono funzioni standard del C. sono estensioni proprietarie della borland se non sbaglio.

puoi usare rand e srand che dev-c++ trova di sicuro.


ciao ;)

DanieleC88
14-12-2004, 10:12
Puoi usare anche random() e srandom(seme) [equivalente a randomize], ma naturalmente segui l'esempio di VICIUS per la compatibilità con l'ANSI C.

Creati una piccola macro:#define RAND(max) (int)((float)(max * rand())/(RAND_MAX/1.0f))

Vado a memoria, aspettati errori :)

Fenomeno85
29-12-2004, 10:33
allora randomize son tutte funzioni del borland ... meglio non usarle per avere un codice pulito e sicuro che ogni compilatore te lo compila senza problemi.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// stabilisce il massimo valore ottenibile
#define MAX_VAL 100

int main(void)
{
srand(time(NULL));
// avrai un valore compreso tra 0 e MAX_VAL
printf("%d\n", rand() % MAX_VAL);
system ("PAUSE");
return 0;
}


cmq se vuoi usare randomize devi fare così:

#include <stdlib.h>
#include <stdio.h>
#define MAX_VAL 100

int main(void)
{
randomize();
printf("%d\n", rand() % MAX_VAL);
return 0;
}


daniele adesso guardo la tua macro :D

~§~ Sempre E Solo Lei ~§~

Fenomeno85
29-12-2004, 10:36
Originariamente inviato da DanieleC88
Puoi usare anche random() e srandom(seme) [equivalente a randomize], ma naturalmente segui l'esempio di VICIUS per la compatibilità con l'ANSI C.

Creati una piccola macro:#define RAND(max) (int)((float)(max * rand())/(RAND_MAX/1.0f))

Vado a memoria, aspettati errori :)

si funziona

~§~ Sempre E Solo Lei ~§~

DanieleC88
30-12-2004, 21:41
Originariamente inviato da Fenomeno85
si funziona

Lo so, l'ho presa dalla manpage di rand da Linux :) (anche se è leggermente diversa da quella originale). Ecco la parte in cui ne parla: In Numerical Recipes in C: The Art of Scientific Computing (William H.
Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New
York: Cambridge University Press, 1992 (2nd ed., p. 277)), the follow-
ing comments are made:
"If you want to generate a random integer between 1 and 10, you
should always do it by using high-order bits, as in

j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

and never by anything resembling

j=1+(rand() % 10);

(which uses lower-order bits)."