Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 2012
-
13 juil. 2005 à 22:27
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
14 juil. 2005 à 10:20
Voilà j'aimerais faire une fonction random qui renvoies 3 variables:
1 long
2 short
Ces 3 variables de types different seront calculé de facon aléatoire dans cette fonction.
Le probleme c'est que je ne su pas sur que la valeur le la fonction rand() prenne une valeure de 16 ou 32 bits suivant le type.
De plus pour retourner plusieurs valeurs comment fait on? faut il passer par plusieurs fonctions en retournant une ?
Qqun pourrait m'eclairer ?
Voici mon code:(je sais il n'y a aucun return et rien n'est tres droit mais bon c'est un premier jet et je veux pas perseverer dans la betise)
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main(void)
{
long llong =0;
short skey1,skey2 =0;
/*Pour que la clef soit dynamique avec le temps*/
srand( (unsigned)time( NULL ) );
llong= rand();
skey1= rand();
skey2= rand();
return llong,skey1,skey2;
}
-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 13 juil. 2005 à 22:52
J'ai rien compris à ton problème. Juste, pour renvoyer 'plusieurs' valeurs, tu renvoies une structure.
Si tu peux expliquer un peu plus ce que tu veux faire...
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 14 juil. 2005 à 08:09
En fait je cherches a faire un fonction qui renvois 3 variables calculées aléatoirements.
Ces 3 variables sont de 2 types:
2 variables de type short
1 variable de type long
Ces variables ettant de type different, suffit il d'ecrire par exemple
long lvar;
short svar1,svar2;
lvar = rand();
svar1= rand();
svar2= rand();
Pour que chaque fonction random "mette" dans la variable associé une valeur qui tient dans son type
a savoir:
16 b pour un short
32 b pour un long
J'ai aussi une nouvelle qst ... Quand vous dites une structure en fait il faut faire un typedef struct ? ou est ce autre chose ?
Merci de votre patience avec un noobie :O)
Teclis
-------------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Le problème c'est que rand donne des nombre entre 0 et 0x7fff. Le bit de poids fort de svar1 et svar2 sera donc toujours à 0. Et lvar sera toujours inférieur à cette valeur. Si tu veux que tes variables puissent prendre toutes les valeurs possibles
Les masques 0xFF et 1 ne sont pas nécessaires
Ce code suppose que RAND_MAX vaut 0x7fff, regarde si c'est aussi cette valeur chez toi, je sais pas si ca peut varier
Pour utiliser la fonction:
int main()
{
srand(time(0));
rand_struct rs;
fillStruct(&rs);
}