Hello, c'est encore moi !
Je dois trier diverses statistiques selon plusieurs critères et dans un certain ordre donné. J'ai essayé plusieures choses mais c'est moche et le tri est partiellement fait. De facto, je dois bidouiller à la main après chaque traitement.
En fait, j'ai des données sous cette forme suivante :
Je dois afficher l'ensemble des produits de la liste. Le tri doit se faire selon les critères suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Produit1, nb1, nb2, nb3, nb4, ratio Produit2, nb1, nb2, nb3, nb4, ratio Produit3, nb1, nb2, nb3, nb4, ratio
- en premier, le ratio en décroissant
- nb1 en décroissant
- nb3 en décroissant
- nb2 en croissant
- nb4 en croissant
Par exemple, pour une liste non ordonnée :
Le tri devrait donner ceci (données tabulées pour un affichage + clair) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 produit1,107,83,3,10,0,563 produit2,107,83,2,5,0,563 produit3,107,83,3,1,0,563 produit4,60,24,0,0,0,714 produit5,80,64,1,0,0,555
Ces données sont chargées dans un hash de hash qui a cette forme là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nb1 nb2 nb3 nb4 ratio produit4 60 24 0 0 0,714 produit3 107 83 3 1 0,563 produit1 107 83 3 10 0,563 produit2 107 83 2 5 0,563 produit5 80 64 1 0 0,555
En passant par une boucle foreach, qui peut me montrer un sort avancé me permettant de faire ce tri SVP ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 my %produit; $produit{produit1}->{nb1} = 107; $produit{produit1}->{nb2} = 83; $produit{produit1}->{nb3} = 3; $produit{produit1}->{nb4} = 10; $produit{produit1}->{ratio} = 0.563; $produit{produit2}->{nb1} = 107; $produit{produit2}->{nb2} = 83; $produit{produit2}->{nb3} = 2; $produit{produit2}->{nb4} = 5; $produit{produit2}->{ratio} = 0.563;
PS : actuellement, mon code est une horreur . J'ai un hash stockant en tant que clés les différents ratios de la liste à traiter. Je fais donc un premier foreach sur les valeurs décroissantes des clés/ratios pour ensuite faire mon tri mais le tri suivant est en bordel couvré, je n'y arrive pas comme je veux.
Partager