Dénombrement

Dénombrement - C - Programmation

Marsh Posté le 21-06-2009 à 16:43:57    

Bonjour,
 
Je cherche à dénombrer des valeurs dans un tableau.
 
Je lis un tableau avec des valeurs numériques 1,1,3,1,45,5,12,36,1,2,45,5,5,12,88 etc. par exemple et je souhaite dans mon programme compter le nombre de 1, de 3, de 5 etc.  
 
Comment procéder ?
 
Merci pour votre entraide.

Reply

Marsh Posté le 21-06-2009 à 16:43:57   

Reply

Marsh Posté le 21-06-2009 à 18:09:56    

façon simple. si tu sais que tes nombres sont de 1 à 88 (comme ici) il suffit d'utiliser la valeur comme pointeur dans un autre tableau :

 

p.ex en pseudo code

 

v[] = {1,1,1,4,4,5,6,7,1,2,4,7,9}
o[13] = {0} // vecteur d'occurence de taille v

 

pour chaque element dans v[]
  o[v[i]]++

 

voilà je ne sais pas si cette méthode à un nom. Bien sûr cela est peu efficace si tu as peu de nombres dans un interval très grand (consommation de mémoire)

 


edit:ortho


Message édité par jagstang le 21-06-2009 à 18:10:28

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 21-06-2009 à 22:27:52    

Merci jagstang mais j'avoue que je n'ai pas tout compris.

Reply

Marsh Posté le 21-06-2009 à 23:13:08    

rien de compliqué pourtant. tu utilises un second vecteur initialisé à 0. et lorsque tu rencontre un nombre N, tu incrémente l'indice N de ton tableau.  


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2009 à 10:13:44    

C'est appelé le tri du panier ou du facteur, ne fonctionne évidemment que sur des entiers.

Reply

Marsh Posté le 22-06-2009 à 16:33:29    

c'est ça. Mais sans trier.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-06-2009 à 18:27:06    

Pas mal du tout comme technique, faudra que je m'en souvienne  :jap:  


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 22-06-2009 à 22:44:47    

jagstang >> ben si on trie quand même, pour obtenir le tableau trié dans le tableau initial, il suffit de parcourir le tableau obtenu à partir du début, si tu rencontre une case à 0  tu passes, sinon tu recopies dans le tableau initial l'index de la case du tableau trié autant de fois que le contenu de cette case.

Reply

Marsh Posté le 23-06-2009 à 08:40:01    

Reply

Marsh Posté le 23-06-2009 à 09:41:36    

Trap D a écrit :

jagstang >> ben si on trie quand même, pour obtenir le tableau trié dans le tableau initial, il suffit de parcourir le tableau obtenu à partir du début, si tu rencontre une case à 0  tu passes, sinon tu recopies dans le tableau initial l'index de la case du tableau trié autant de fois que le contenu de cette case.


sans faire la dernière étape que tu cite, on ne trie pas, on compte simplement les occurences.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 23-06-2009 à 09:41:36   

Reply

Marsh Posté le 23-06-2009 à 18:41:24    

jagstang a écrit :


sans faire la dernière étape que tu cite, on ne trie pas, on compte simplement les occurences.


On veut absolument avoir le dernier mot  :sarcastic:

Reply

Marsh Posté le 23-06-2009 à 20:11:17    


 
La partie complexité vaut son pesant de WTF [:prozac]

Reply

Marsh Posté le 25-06-2009 à 17:37:54    

Trap D a écrit :


On veut absolument avoir le dernier mot  :sarcastic:


Pas vraiment non, c'est la réalité  [:mlc]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed