Tableau en c

Résolu
abali12 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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 9813 Date d'inscription   Statut Contributeur Dernière intervention   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 72 Date d'inscription   Statut Membre Dernière intervention   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 52 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 52 Date d'inscription   Statut Membre Dernière intervention   1
 
lol dsl fiddy^^ j'avais mm pas remarqué qu'il modifié itabchiffres ;)
0
abali12 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 52 Date d'inscription   Statut Membre Dernière intervention   1
 
je suis obligé d'utiliser itabchiffres dans cet ordre :/
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 52 Date d'inscription   Statut Membre Dernière intervention   1
 
ok et comment je fais pour permuter les valeurs du tableau itabchiffres?
je trouve pas comment faire (je debute en c^^)
0