Perl !? comment a aime

Perl !? comment a aime - Perl - Programmation

Marsh Posté le 09-01-2004 à 00:16:28    

Salut a tous  
je reviens pour un avis :  
j ai un fichier qui contient des lignes du genre  
 
jj hh mm ss qte ( jj=hour, hh=heure ..enfin vous voyez le truc , qte= une quantite. Intervalle de mesure ss. Donc pour jj on a un tonne de ligne)  
 
le but est de pondre la la qte max par jj et la qte moyenne par jj  
alors j'ai ecris un truc ds le genre  

Code :
  1. boucle:
  2. $jj=(split(/ /,$_))[0]; # pour recup jj
  3. $lu=(split(/ /,$_))[4]; # pour recup qte
  4. %jcpu = ($jj=>push(@tcpu,$lu)); # par jj je fais un hash ..jj
  5.                                 # et tableau de qte pour                       
  6.                            # determiner le max sur jj               
  7. $cpt{$jj}++;               # compte des jj identique         
  8. $cpu{$jj} += (split(/ /,$_))[4]; # somme de qte
  9. fin boucle
  10. foreach $jj (keys %cpt){
  11.                         # pour chaque jj pris ds un hash qcq
  12. ($jj=>(@max = sort @tcpu));# tri de mon tableau pour extraire max
  13. $moycpu = $cpu{$jj}/$cpt{$jj};# calcul de la moyenne
  14. chomp @max ;
  15. print "$jj -> $max[0] -> $moycpu  \n";}


 
Vous en pensez quoi ?

Reply

Marsh Posté le 09-01-2004 à 00:16:28   

Reply

Marsh Posté le 09-01-2004 à 09:24:43    

J'ai pas tout capté mais juste un truc à propos de la fonction sort()
 
Si tu as des valeurs du genre 1,2,...,9,10,11,12,...,21,22,23, la fonction sort va te retourner son tri sous cette forme :
 
1,10,11,12,13,...,2,20,21,22,23,...,3,30,31,...
 
Essaie ceci pour avoir un tri numérique :
 

Code :
  1. # @max = sort @tcpu    # à remplacer par :
  2. @max = sort { $a <=> $b }(@tcpu)


 
Là, tu auras 1,2,3,... etc.


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 10-01-2004 à 12:03:51    

Tiens j avais pas pense a ca ...comme ...c sympa de me faire la remarque ..

Reply

Sujets relatifs:

Leave a Replay

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