Tableau en c

Résolu/Fermé
abali12 Messages postés 52 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 1 août 2012 - Modifié par abali12 le 6/12/2010 à 23:20
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 8 déc. 2010 à 08:29
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



4 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
7 déc. 2010 à 15:40
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 lundi 6 décembre 2010 Statut Membre Dernière intervention 3 février 2012 11
7 déc. 2010 à 16:40
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 samedi 25 septembre 2010 Statut Membre Dernière intervention 1 août 2012 1
7 déc. 2010 à 18:23
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
7 déc. 2010 à 21:28
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 samedi 25 septembre 2010 Statut Membre Dernière intervention 1 août 2012 1
7 déc. 2010 à 22:07
lol dsl fiddy^^ j'avais mm pas remarqué qu'il modifié itabchiffres ;)
0
abali12 Messages postés 52 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 1 août 2012 1
7 déc. 2010 à 22:25
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
6 déc. 2010 à 23:42
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 samedi 25 septembre 2010 Statut Membre Dernière intervention 1 août 2012 1
6 déc. 2010 à 23:54
je suis obligé d'utiliser itabchiffres dans cet ordre :/
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
7 déc. 2010 à 00:05
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 samedi 25 septembre 2010 Statut Membre Dernière intervention 1 août 2012 1
7 déc. 2010 à 13:17
ok et comment je fais pour permuter les valeurs du tableau itabchiffres?
je trouve pas comment faire (je debute en c^^)
0