Bonjour, quelle est la syntaxe de la fonction rand ?
Pour générer un nombre entre 1 et 10.
Pour générer une lettre minuscule entre a et z.
pour générer une lettre majuscule entre A et Z.
Merci.
Version imprimable
Bonjour, quelle est la syntaxe de la fonction rand ?
Pour générer un nombre entre 1 et 10.
Pour générer une lettre minuscule entre a et z.
pour générer une lettre majuscule entre A et Z.
Merci.
C'est à rendre pour quand ?
$ man 3 rand
Citation:
DESCRIPTION
The rand() function returns a pseudo-random integer between 0 and RAND_MAX.
De là, tu utilises le modulo pour resteindre l'intervalle à celui qui t'intéresse.
Pour rester volontairement évasif, je dirais : « même chose ».Citation:
Pour générer une lettre minuscule entre a et z.
pour générer une lettre majuscule entre A et Z.
J'ai lu sur un autre site qu'il ne fallait surtout pas utiliser le modulo pour générer des entiers ??
De plus, comment stocker dans 1 seul variable plusieurs chiffres ou lettres générée par le rand ? (J'utilise une boucle for dont le nombre de cycles est entrer par l'utilisateur)
Ce serait vrai si la valeur renvoyée par rand() n'était pas entière elle-même (cas de certains langages, dont la fonction aléatoire renvoie une valeur strictement comprise entre 0 et 1) mais en l'occurence, cette fonction renvoie un toujours un entier, positif ou nul, dans un intervalle connu.
Tu utilises plusieurs variables ou, mieux, un tableau.Citation:
De plus, comment stocker dans 1 seul variable plusieurs chiffres ou lettres générée par le rand ? (J'utilise une boucle for dont le nombre de cycles est entrer par l'utilisateur)
rand() renvoie une valeur entre 0 et RAND_MAX. Ensuite, il faut un peu d'imagination... C'est plus un problème d'arithmétique que de C.
Pour le 2 question suivantes, il suffit comme toujours de ramener le problème compliqué à un problème connu :
- placer les caractères dans un tableau de N éléments
- tirer un index entre 0 et N-1
le caractère est alors tableau[index]
Fait de ton mieux et poste ton code si nécessaire.
J'ai réussi à faire une partie de ce que je désirais, voici mon code:
nbMin, nbMaj, nbChiffre sont des chiffres entrés par l'utilisateur.Code:
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 srand (time (NULL)); printf ("\n\n"); for (i=0; i<nbMaj; i++) { minAleatoire = 'a'+ rand()%26; printf("%c", minAleatoire); } printf ("\n\n"); for (i=0; i<nbMin; i++) { majAleatoire = 'A'+ rand()%26; printf("%c", majAleatoire); } printf ("\n\n"); for (i=0; i<nbChiffre; i++) { chiffreAleatoire = 1 + rand()%10; printf("%d", chiffreAleatoire); }
Mon but est maintenant de créer un mot de passe en puisant aléatoirement (donc avec rand je pense) dans la suite de majuscule, de minuscule, de chiffre crée. Aprés je pensais stocker ce mot de passe dans une variable et ensuite afficher le mot de passe à l'écran.
Désolé si les explications ne sont pas très claire, j'essaie de faire de mon mieux.
PS: est-ce que le srand est utile pour ce que je fais ?? j'ai essayer de l'enlever et il ne me semble pas que cela change quelque chose...
Merci pour toutes vos réponses précédentes et futures!
Il vaut mieux poster du code qui compile, on perd moins de temps à le vérifier...
Attention, la langage C ne garantit pas que les valeurs des caractères autre que '0' à '9' soient consécutives. Ce code n'est pas portable. J'avais pourtant indique une méthode avec un tableau de char et un index tiré au hasard. Je perds mon temps ou quoi ?Code:
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
33
34
35
36
37
38
39
40
41
42
43 #include <stdlib.h> #include <time.h> #include <stdio.h> int main (void) { srand (time (NULL)); { int nbMin = 4; int i; for (i = 0; i < nbMin; i++) { int minAleatoire = 'a' + rand () % 26; printf ("%c", minAleatoire); } printf ("\n"); } { int nbMaj = 5; int i; for (i = 0; i < nbMaj; i++) { int majAleatoire = 'A' + rand () % 26; printf ("%c", majAleatoire); } printf ("\n"); } { int nbChiffre = 7; int i; for (i = 0; i < nbChiffre; i++) { int chiffreAleatoire = 1 + rand () % 10; printf ("%d", chiffreAleatoire); } printf ("\n"); } return 0; }
J'ai indiqué la méthode. C'est toujours la même. Maintenant, il faut la mettre en œuvre.Citation:
Mon but est maintenant de créer un mot de passe en puisant aléatoirement (donc avec rand je pense) dans la suite de majuscule, de minuscule, de chiffre crée.
Oui, ça permet que le tirage soit différent à chaque lancement du programme.Citation:
PS: est-ce que le srand est utile pour ce que je fais ??
http://emmanuel-delahaye.developpez.com/notes.htm#rand
Avec DEV C++ mon programme compile très bien...
Je dois faire ce devoir sans utiliser les tableau... Sinon j'aurais suivi ta méthode.
Merci quand même pour l'aide.
Merci de vérifier avant de poster :
Joli score pour 27 lignes de code...Code:
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
33
34 -------------- Build: Debug in hello --------------- Compiling: main.c Linking console executable: bin\Debug\hello.exe C:\dev\hello\main.c:3: error: syntax error before '(' token C:\dev\hello\main.c:5: error: syntax error before string constant C:\dev\hello\main.c:5: warning: type defaults to `int' in declaration of `printf' C:\dev\hello\main.c:5: warning: function declaration isn't a prototype C:\dev\hello\main.c:5: warning: conflicting types for built-in function 'printf' C:\dev\hello\main.c:5: error: ISO C forbids data definition with no type or storage class C:\dev\hello\main.c:10: error: syntax error before string constant C:\dev\hello\main.c:10: warning: type defaults to `int' in declaration of `printf' C:\dev\hello\main.c:10: warning: function declaration isn't a prototype C:\dev\hello\main.c:10: error: ISO C forbids data definition with no type or storage class C:\dev\hello\main.c:13: error: syntax error before string constant C:\dev\hello\main.c:13: warning: type defaults to `int' in declaration of `printf' C:\dev\hello\main.c:13: warning: function declaration isn't a prototype C:\dev\hello\main.c:13: error: ISO C forbids data definition with no type or storage class C:\dev\hello\main.c:18: error: syntax error before string constant C:\dev\hello\main.c:18: warning: type defaults to `int' in declaration of `printf' C:\dev\hello\main.c:18: warning: function declaration isn't a prototype C:\dev\hello\main.c:18: error: ISO C forbids data definition with no type or storage class C:\dev\hello\main.c:21: error: syntax error before string constant C:\dev\hello\main.c:21: warning: type defaults to `int' in declaration of `printf' C:\dev\hello\main.c:21: warning: function declaration isn't a prototype C:\dev\hello\main.c:21: error: ISO C forbids data definition with no type or storage class C:\dev\hello\main.c:26: error: syntax error before string constant C:\dev\hello\main.c:26: warning: type defaults to `int' in declaration of `printf' C:\dev\hello\main.c:26: warning: function declaration isn't a prototype C:\dev\hello\main.c:26: error: ISO C forbids data definition with no type or storage class Process terminated with status 1 (0 minutes, 0 seconds) 13 errors, 13 warnings
Pourquoi ? C'est imposé ? C'est une complication inutile, je ne sais même pas si c'est possible de manière portable...Citation:
Je dois faire ce devoir sans utiliser les tableau...
je comprend vraiment pas chez moi ca ne détecte aucune erreur et le programme se lance... Enfin...
Oui c'est une complication inutile mais je suis obligé de trouver une méthode sans utiliser les tableau...
Ok je vais regarder merci