Remplir un tableau avec des valeurs aléatoires(pour mastermind)

rammstein596 Messages postés 6 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 15 juin 2006 - 13 juin 2006 à 19:28
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 16 juin 2006 à 16:48
Bonsoir!!
Je dois faire un mastermind en C avec Dev-C++ en cours,mais je suis bloqué a une étape,c'est pour remplir un tableau avec des valeurs aléatoires,j'ai utilisé une fonction alea() qui renvoi une valeur aléatoire comprise entre 1 et une valeur donné,mon problème,c'est que j'arrive a faire renter une valeur aléatoire dans une variable,mais je n'arrive pas a les faire renteré dans un tableau...
Voila un morceau de mon code:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void initAlea();
void initAlea()
     {
     srand(time(0));
     }
     
      int alea(int sup)
      {
          return(int)(rand()%(sup+1));
      }
int main()
{
    int sup=8,i=0,nbChiffres=5;
    int nombre[10];
 initAlea();
 for(i=0;i=nbChiffres;i++)
 {
               initAlea();
             nombre[1]=alea(sup);
}
 
 printf("%d",nombre[1]);
 
    getch();
    return(0);
}

Merci beaucoup pour votre aide
A voir également:

12 réponses

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
13 juin 2006 à 19:50
or(i=0;i=nbChiffres;i++)

Je dit peut etre une betise mais ca veut pas dire en partant de i =0
rajouter 1 a i tant que i = nbChiffres, autrement dit jamais vu que i=
0 et nbChiffre=5

??
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 juin 2006 à 20:02
Au contraire
for(i=0;i=nbChiffres;i++) est une boucle infinie car (i=nbChiffres) vaut nbChiffres (5), et ne vaut donc jamais 0. La condition de continuation est donc tout le temps vraie. Il faut écrire:
for(i=0;i<nbChiffres;i++)
nombre[i] = alea(sup);

Le initAlea n'est a faire qu'une seule fois, donc en dehors de la boucle
0
rammstein596 Messages postés 6 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 15 juin 2006
13 juin 2006 à 20:15
Merci beaucoup pour vos réponses,ça marche maintenant!!
0
rammstein596 Messages postés 6 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 15 juin 2006
14 juin 2006 à 13:31
Re bonjour,j'ai un autre problème(je suis pas doué ,désolé).
Dans le mastermind,quand le joueur rentre un chiffre,il faut que je le décompose pour pouvoir les faire entrer dans un tableau,pour le comparer avec la valeur aléatoire que l'ordinateur aura donné...mais je sais pas comment faire,j'ai pensé a faire un for avec un getchar(),mais on est obligé d'utiliser un tableau en int,donc ca ne marche pas
Pouvez vous m'aider?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
14 juin 2006 à 17:12
peut etre que avec
intatoi(
constchar*string
);

Pour convertir un char* en int
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
14 juin 2006 à 17:18
Mais normallement tu as plus simple

si chaine="45678"

tu as

chaine[0]='4'=52

chaine[1]='5'=53

etc ......


Il te suffit de retirer 48 a la valeur pour avoir la valeur en int mais
tu as interet a bien encadrer la fonction au cas ou la personne mette
autre chose que des chiffres.
0
rammstein596 Messages postés 6 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 15 juin 2006
14 juin 2006 à 17:39
Je n'ai pas vu ces fonctions en cours,je peux essayer,mais dans ta deuxieme réponse,il y a une chose que je ne comprends pas,on doit connaitre la valeur tapé pour la faire enter dans le tableau non'a quoi correspond le '4' et le '5'?'4' vaut dire 4eme chiffre?
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
14 juin 2006 à 21:31
chaine[0]='4'=52

1 er caractere de la chaine "45678" qui est le 4 en mode ascii qui correspond au code 52
0
rammstein596 Messages postés 6 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 15 juin 2006
15 juin 2006 à 16:54
Oui,mais pour ca il faut avoir décomposé la chaine "45678" ou connaitre la le nombre que le joueur a tapé non?Dans le mastermind comme c'est le joueur qui tape sa proposition je ne vois pas comment faire
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
15 juin 2006 à 17:30
Il n y a pas a decomposer la chaine, ca la fait tout seul, mais en fait
je te balance des trucs mais je ne sais pas comment tu recuperes la
proposition du joueur, lettre par lettre (ex avec getch() ) ou la
chaine d'un coup (ex avec scanf)
0
rammstein596 Messages postés 6 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 15 juin 2006
15 juin 2006 à 17:42
En fait j'utilise scanf() et par exemple le joueur tape "1234" et dans mon tableau propo[0] il y aura 1, dans propo[1]=2....,depuis hier je bloque sur ca,j'ai essayé en limitant les entrées au clavier en utilisant scanf("%.1s",ch) ,et en le metant dans une boucle,mais dans mon tableau il y a que propo[0]=1 et rien dans le reste...
Je sais pas si c'est possible en utilisant une boucle, que quand le joueur tape le "1" de "1234",le 1 se stock dans le tableau,puis le 2 dans la case suivant...sans appuyer sur enter ?
Mais ca me semble assez difficil car j'ai le droit d'utiliser que #include<stdio.h>,#include<conio.h> et #include<stdlib.h>(stdlib j'ai quasiment jamais utiliser sauf pour remplir le tableau avec des valeur aléatoires...)
Donc voila,je suis un peu perdu
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
16 juin 2006 à 16:48
Eh ben c'est parfait tu utilise scanf donc tu recupere tout d'un coup

ch ="1234"

ch[0] = '1'

ch[1] = '2'

etc ......
0
Rejoignez-nous