Tableau en c

Résolu
abali12 Messages postés 58 Statut Membre -  
Char Snipeur Messages postés 10112 Statut Contributeur -
Bonjour,

une partie de mon code:
int iTabChiffres[25]={1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,25,25,50,50,100}; 
 int iTabChoix[6]; 

 srand((int)time(NULL)); 

 iResult=(rand()%1001)+1; 

printf("Voici les 6 numeros:"); 
  for(iBcl=0; iBcl<=5; iBcl++){ 
   
   iHasard=(rand()%25);  
   iTabChoix[iBcl]=iTabChiffres[iHasard];            
   printf("%d\t",iTabChoix[iBcl]);    
  }


je souhaite remplir le tableau itabchoix avec des valeurs de itabchiffres qui sont prises au hasard; pour l'instant y a pas de probleme ,j'ai reussi a faire.
je dois faire en sorte d'avoir un "ihasard" different pour chaque case que je vais remplir de itabchoix.
En gros si ihasard=14 par ex => itabchoix[0]=itabchiffres[14] càd 7
En suite si ihasard=2 par ex => itabchoix[1]=itabchiffres[2] càd 1
et ainsi de suite pour chaque case.
il faut juste que ihasard ne soit pas egal a 14 et 2 les cas suivants.
Si une case du tableau itabchiffres a été utiliser, il faut qu'il ne puisse pas etre reutilliser.
Je sais pas du tout comment faire pour eviter ca.
Si quelqu'un pouver m'aider.
Merci d'avance



A voir également:

4 réponses

Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
Je ne suis pas sur que la méthode de permutation soit la plus simple...
je modifierai iTabchiffre :
  for(iBcl=0; iBcl<=5; iBcl++){ 
   do{
   iHasard=(rand()%25);  
   if(iTabChiffres[iHasard]==0)continue;
   iTabChoix[iBcl]=iTabChiffres[iHasard];            
   printf("%d\t",iTabChoix[iBcl]);    
   iTabChiffres[iHasard]=0;
   break;
   }while(1)
  }
2
Nanolenain Messages postés 76 Statut Membre 11
 
Cette solution semble bonne même si je ne suis pas a l'aise avec les continue et les break.
C'est certaiment la plus simple pour toi abali12.
0
abali12 Messages postés 58 Statut Membre 1
 
Ok merci de ton aide je vais testé ca des qu je rentre ce soir.
Juste une question comment on declare le "continue" parcequon a pas encore vu ca.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Hum, moi je n'ai pas le droit de modifier itabchiffres, et char snipeur en a le droit ? Il y a du favoritisme lol.
Effectivement, je n'avais pas à faire comme ça. Cela est moins performant je pense dans le cas où iBcl approche de 25 mais dans ce cas, c'est mieux. Bien vu ;-)))
0
abali12 Messages postés 58 Statut Membre 1
 
lol dsl fiddy^^ j'avais mm pas remarqué qu'il modifié itabchiffres ;)
0
abali12 Messages postés 58 Statut Membre 1
 
j'ai testé le code que tu m'as donné et ca marche nickel ty
Si je peux te demander un dernier truc si ca te derange pas (ca serait vraiment sympa) tu peux m'expliquer en quelque ligne les etapes de ce programme stp.
vu que j'ai jamais utilisé de "continue" ou de break dans un "do" et que je vais passer a l'oral je voudrais pouvoir repondre au prof quand il va me demander que fais cette partie du code, a quoi sert le continue? pourquoi avoir mis un break? pourquoi avoir mis la condition du while a 1? ect..

MERCI D'AVANCE
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour;

Le plus simple à mon humble avis est de mélanger le tableau iTabChiffres en faisant une dizaine de permutation. Ensuite, il ne te restera qu'à prendre les 6 premières valeurs pour les mettre dans iTabChoix.

Cdlt,
0
abali12 Messages postés 58 Statut Membre 1
 
je suis obligé d'utiliser itabchiffres dans cet ordre :/
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Rien ne t'empêche de créer un autre tableau qui contiendra itabchiffres et que tu pourras mélanger à ta guise.
De toute façon, que tu utilises ma solution ou une autre, tu devras utiliser un autre tableau. Donc, aucun problème.
0
abali12 Messages postés 58 Statut Membre 1
 
ok et comment je fais pour permuter les valeurs du tableau itabchiffres?
je trouve pas comment faire (je debute en c^^)
0