Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1773 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Tirage aléatoire de 7 nombres compris entre 1 et 49

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tirage aléatoire de 7 nombres compris entre 1 et 49

n°1635961
zondervan
Posté le 03-11-2007 à 09:48:15  profilanswer
 

Hello tout le monde, je dois dois donc faire un genre de loto flash pour tirer aléatoirement de 7 nombres compris entre 1 et 49.
 
Je dois utiliser int rand(void) void srand(int) x=time(NULL) et il est précier que diviser un nombre entier par un nombre entier non nul n permet d'obtenir un reste <n....
 
Voila ce que j'ai fais, sauf qu'il me sort a chaque fois les mêmes nombres :D  
 


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    int i,X,s;
int n=rand()%49+1;  
 
int rand(void);
{
   
X=time(NULL);
srand(X);
 
 
for (i = 1; i <= 7; i = i+1)
 
printf("%d\n", n/i);
}
 
system("pause" );
return 0;
 }


 
En vous remerciant de votre futur aide.

Message cité 1 fois
Message édité par zondervan le 03-11-2007 à 09:49:11
mood
Publicité
Posté le 03-11-2007 à 09:48:15  profilanswer
 

n°1636017
Ace17
Posté le 03-11-2007 à 12:22:56  profilanswer
 

Il faut appeler srand une et une seule fois, au debut de ton programme.
Tu n'as pas le droit d'imbriquer des fonctions en C. La prochaine fois, poste au moins un exemple qui compile.

n°1636061
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-11-2007 à 14:29:09  profilanswer
 

zondervan a écrit :

Voila ce que j'ai fais, sauf qu'il me sort a chaque fois les mêmes nombres


En plus de ce qui a été dit, rand() est une fonction standard. Tu n'as pas le droit de la redéclarer. C'est fait dans <stdlib.h>.

 

http://mapage.noos.fr/emdel/notes.htm#rand

Message cité 1 fois
Message édité par Emmanuel Delahaye le 03-11-2007 à 17:11:50

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1636066
Ace17
Posté le 03-11-2007 à 14:51:08  profilanswer
 

Emmanuel Delahaye a écrit :


En plus de ce qui a été dit, rand() est une fonction standard. Tu n'as pas le droit de la redéfinir.
 
http://mapage.noos.fr/emdel/notes.htm#rand


En fait, dans son exemple, il ne la redefinit pas, il la redeclare ( a cause du point-virgule, mais a mon avis ca n'est pas fait expres ...)

n°1636098
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-11-2007 à 17:13:06  profilanswer
 

Ace17 a écrit :

En fait, dans son exemple, il ne la redefinit pas, il la redeclare ( a cause du point-virgule,<...> )


Exact, je me suis laissé aveugler par d'autres commentaires, et je n'ai pas vu le ';'. J'ai corrigé.


Message édité par Emmanuel Delahaye le 03-11-2007 à 19:20:11

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1636102
zondervan
Posté le 03-11-2007 à 17:22:14  profilanswer
 

j'ai essayer de corriger mes fautes mais j'ai toujours un problème! merci de votre aide!
 


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
int i,X,s;
int n=rand()%49+1;  
 
   
X=time(NULL);
srand(X);
 
 
for (i = 1; i <= 7; i = i+1)
 
printf("%d\n", n%i);
 
 
system("pause" );
return 0;
 }  

n°1636103
mcyrb
Mieux vaut tard que plus tard
Posté le 03-11-2007 à 17:24:58  profilanswer
 

Peut-etre qu'il faut faire appel à srand() avant de faire appel à rand() ?

 

Et surtout qu'il faut faire appel à rand() dans la boucle et pas à l'initialisation de n.
(Chaque fois que tu écris n ça n'appelle pas rand(), hein ?)

 

Et je vois pas bien l'utilité de ton %i si tu veux des nombres entre 1 et 49 inclus...


Message édité par mcyrb le 03-11-2007 à 17:31:51
n°1636109
zondervan
Posté le 03-11-2007 à 17:55:25  profilanswer
 

excusez moi je peux pas tous savoir....
 


 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
int i,X,s;
 
 
   
X=time(NULL);
 
for (s = 1; s <= 7; s++)  
 {
for (i = 1; i <= 49; i++)
srand(X);
int n=rand()%49+1;  
printf("%d\n", n%X);
}
 
system("pause" );
return 0;
 }  

n°1636111
breizhbugs
Posté le 03-11-2007 à 18:08:59  profilanswer
 

zondervan a écrit :

excusez moi je peux pas tous savoircomprendre....
 


 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
int i,X,s, n;
   
X=time(NULL);
srand(X);
for (s = 1; s <= 7; s++)  
{
    n=rand()%49+1;  
    printf("%d ", n);
}  
system("pause" );
return 0;
 }  



Cela dit faut ensuite vérifier que chaque nombre est unique -> au boulot


Message édité par breizhbugs le 03-11-2007 à 18:11:55
n°1636138
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-11-2007 à 19:25:17  profilanswer
 

zondervan a écrit :

excusez moi je peux pas tous savoir....

 
 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
int i,X,s;

 


   
X=time(NULL);

 

for (s = 1; s <= 7; s++)
 {
for (i = 1; i <= 49; i++)
srand(X);



On te dit que srand() ne doit être appelé qu'une seule fois. Tu es dur d'oreille ou quoi  ?

 

D'autre part, je rappelle que si une structure de code agit sur plus d'une instruction, les {} sont obligatoires. Ton code une fois ré-indenté donne :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main (void)
  5. {
  6.    int i, X, s;
  7.    X = time (NULL);
  8.    for (s = 1; s <= 7; s++)
  9.    {
  10.       for (i = 1; i <= 49; i++)
  11.          srand (X);
  12.       int n = rand () % 49 + 1;
  13.       printf ("%d\n", n % X);
  14.    }
  15.    system ("pause" );
  16.    return 0;
  17. }


ce qui n'est probablement pas ce que tu veux...

 


Message édité par Emmanuel Delahaye le 03-11-2007 à 19:26:14

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 03-11-2007 à 19:25:17  profilanswer
 

n°1636243
AthlonSold​ier
Feel the power
Posté le 04-11-2007 à 01:56:39  profilanswer
 

Avec remise :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {
  6.     int i;
  7.     srand(time(NULL));
  8.     for (i = 0; i < 7; i++)
  9.         printf("%i\n", (rand() % 50) + 1);
  10.     getchar();
  11.     return (0);
  12. }


 
Sans remise :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {
  6.     int i, j, r, s[7];
  7.     srand(time(NULL));
  8.     r = ((rand() % 50) + 1);
  9.     for (i = 0; i < 7; i++)
  10.     {
  11.         do
  12.         {
  13.             r = ((rand() % 50) + 1);
  14.             for (j = 0; j < i; j++)
  15.                 if (r == s[j])
  16.                 {
  17.                     r = 0;
  18.                     break;
  19.                 }
  20.         }
  21.         while (r == 0);
  22.         s[i] = r;
  23.         printf("%i\n", r);
  24.     }
  25.     getchar();
  26.     return (0);
  27. }


n°1636278
Ace17
Posté le 04-11-2007 à 09:44:56  profilanswer
 


T'as tout compris a la pedagogie toi ... Tous les gars qui ont poste sur ce topic sont capables d'ecrire cette fonction. Mais si on l'a pas fait, c'est que y'avait une raison ... :sarcastic:  
 

n°1636404
AthlonSold​ier
Feel the power
Posté le 04-11-2007 à 15:04:24  profilanswer
 

Ace17 a écrit :


T'as tout compris a la pedagogie toi ... Tous les gars qui ont poste sur ce topic sont capables d'ecrire cette fonction. Mais si on l'a pas fait, c'est que y'avait une raison ... :sarcastic:  
 


La pédagogie c'est aussi d'arrêter les frais quand tu vois que la personne n'a absolument rien compris et part à totonnement sur des algorithmes sans queue ni tête.
Autant lui donner la correction et une bonne base de travail pour l'aider à comprendre/apprendre (du moins si elle est assez intelligente pour ne pas faire un copier/coller sans chercher à comprendre). :)


Message édité par AthlonSoldier le 04-11-2007 à 15:06:28
n°1636629
Ace17
Posté le 05-11-2007 à 07:34:06  profilanswer
 

OK, donc le jour ou j'ai besoin d'un code tout fait, je sais qu'il me suffira de poster ici une fonction sans queue ni tete a la limite du compilable dont la seule qualite sera de comporter quelques appels aux bonnes API (histoire de dire que c'est pas completement au pif) ... jusqu'a ce que quelqu'un me prenne en pitie et m'ecrive mon code.
 
D'autant plus que balancer la solution juste apres que deux intervenants aient pris la peine de rediger des reponses comportant des indications, c'est un peu un manque de respect envers eux.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Tirage aléatoire de 7 nombres compris entre 1 et 49

 

Sujets relatifs
chiffre aléatoireFork et programme aléatoire
Tirage d'une variable aléatoire comprise ...decouverte de plusieurs nombres
Supprimer tout les chiffres/nombres contenus dans une chaineCréer un générateur de noms aléatoire
[SQL server et ODBC] PB erreur 3151 aléatoire !Affichage aléatoire d'un clip
euh... rien compris 
Plus de sujets relatifs à : Tirage aléatoire de 7 nombres compris entre 1 et 49


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR