Problème nombre aléatoire c

Fermé
titi.007 Messages postés 5 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 12 octobre 2014 - 30 nov. 2013 à 11:37
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 déc. 2013 à 21:05
salut, ce code ne compile pas !! aide moi svp
void main()
{
long int n;
srand(time(NULL));
 do
 {
     n= rand() % (1000000);
 }while(n<100000);
pirntf("%d",n);
}

2 réponses

seo610 Messages postés 596 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 30 juin 2015 102
Modifié par seo610 le 30/11/2013 à 19:06
Il te faut inclure stdio.h et ton printf est mal écrit.
Sinon, ton code ne fait pas grand chose d'intéressant, car n ne va jamais être plus grand que 100 000.
rand() ne renvoit que des valeurs entre 0 et 32768 et le modulo que tu fais ne va rien changer à ce résultat.

Buy a ward, stop a gank, save a life.
Wards.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2013 à 18:26
stdio.h n'est pas suffisant

rand() ne renvoit que des valeurs entre 0 et 32768
32767 plutôt. Et rand() peut retourner une valeur supérieure à cette limite. Ca dépend de la machine.
0
seo610 Messages postés 596 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 30 juin 2015 102
1 déc. 2013 à 20:45
Merci pour la précision, c'est vrai, j'ai copié le mauvais nombre. Je me suis basé sur The C Programming Language ANSI C Version. Avec mingw, stdio.h est suffisant.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2013 à 21:05
mingw n'est pas un compilateur. J'imagine que tu veux parler de gcc. Cela dépend des flags que tu as mis.
En tout cas, il faut mettre stdio.h pour printf(), stdlib.h pour srand()/rand() et time.h pour time().
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 déc. 2013 à 18:29
Bonjour,

Il faut inclure stdio.h, stdlib.h et time.h

Ce n'est pas voir main() mais int main(voir)
Et il ne faut pas oublier : return 0; en fin.

Ce n'est pas pirntf mais printf. Il ne faut pas oublier de mettre un saut de ligne (\n) en fin de ligne. Ou alors faire un flush.
=> printf("%d\n",n);

Et ton rand() retourne une valeur entre 0 et RAND_MAX. Combien vaut-il ? Il y a un vrai risque de faire une boucle infinie. Peut-être que tu devrais revoir cette condition.

Cdlt,
0