Tri un fichier sur la dernière colonne

Résolu/Fermé
mouna1985 Messages postés 31 Date d'inscription dimanche 29 mars 2009 Statut Membre Dernière intervention 13 novembre 2016 - 12 nov. 2012 à 12:56
ngounou25 Messages postés 96 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 5 juillet 2013 - 13 nov. 2012 à 15:25
Bonjour,

Après un calcul sur C je sauvegarde 8 variables dans un fichier.txt

fprintf(input_data_trans,"%.f %.f %.3E %.3E %.3E %.3E %.3E %.3E\n",No,A,B,C,D,E,F,distance);

Donc le fichier est de la forme suivante:

0 2 1.340E-004 1.070E-005 1.111E-001 5.177E-001 3.484E-001 7.584E-001
1 6 7.190E-005 6.470E-006 5.556E-001 2.595E-001 9.074E-002 3.431E-002
2 2 1.810E-004 1.360E-005 1.111E-001 7.131E-001 5.250E-001 2.975E-001
3 8 1.280E-004 9.070E-006 7.778E-001 4.927E-001 2.491E-001 6.145E-002
4 8 8.440E-005 7.190E-006 7.778E-001 3.114E-001 1.346E-001 2.758E-001
5 9 2.180E-004 5.220E-006 8.889E-001 8.669E-001 1.462E-002 4.148E-001
6 4 7.580E-005 1.120E-005 3.333E-001 2.757E-001 3.788E-001 2.891E-001
7 5 1.270E-004 9.980E-006 4.444E-001 4.886E-001 3.045E-001 6.383E-002
8 10 7.840E-005 7.970E-006 1.000E+000 2.865E-001 1.821E-001 2.775E-001
9 1 1.690E- 004 6.020E-006 0.000E+000 6.632E-001 6.334E-002 2.445E-001

=> le fichier contient :10 lignes et 8 colonnes.

par la suite je veux trier les lignes de mon fichiers suivant la dernière colonnes (distance)

ç.a.d:

7.584E-001 > 3.431E-002
Donc la ligne
(0 2 1.340E-004 1.070E-005 1.111E-001 5.177E-001 3.484E-001 7.584E-001) se déplace dans la 2 éme ligne
et la ligne
(1 6 7.190E-005 6.470E-006 5.556E-001 2.595E-001 9.074E-002 3.431E-002) sera dans la 1 ère ligne.

Que je dois faire pour lire fichier et tirer les valeurs?
Merci d'avance


A voir également:

2 réponses

ngounou25 Messages postés 96 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 5 juillet 2013 4
12 nov. 2012 à 15:16
Salut,

Tu as le choix.

--> Soit tu ne gère pas la complexité en espace.
Là, c'est beaucoup plus facile. Tu charge ton fichier complet dans une matrice nx8 et tu applique l'un des célèbres algorithmes de tri (tri insertion, tri sélection, tri bulle, tri fusion, tri rapide, tri tas) sur la colonne 8. Dans ce cas, le seul endroit où tu devras faire attention est lorsque tu réalise tes permutations. La permutation des éléments aux lignes i et j (de la colonne 8) entraînera systématiquement la permutation de tous les éléments de ligne i et j de même colonne sur les 7 colonnes restantes.

--> Soit tu gère la complexité en espace
La tu charge unique la colonne 8 dans un matrice nx2 dans laquelle une colonne représente la colonne 8 (de ton fichier) et l'autre son numéro de ligne dans le fichier. Après le tri, c'est la réécriture qui sera un peu complexe. Mais avec un peu de labeur, ce sera réalisable. Par exemple, si après le tri, dans ta 1er case t'as un élément qui était initialement à la ligne i (information refermé par la 2e colonne), tu va dans ton fichier de base, tu lis la ligne i, tu l'écris dans ton fichier temporaire. Tu passe à à ton 2e élément. S'il était à la ligne j, tu va dans ton fichier initial, tu lis la ligne j et tu l'écris dans le fichier temporaire. Tu boucle jusqu'à la fin. Et au final, tu copie le fichier temporaire dans le fichier de base.

Bonne chance.
0
mouna1985 Messages postés 31 Date d'inscription dimanche 29 mars 2009 Statut Membre Dernière intervention 13 novembre 2016 3
12 nov. 2012 à 23:38
Merci pour la réponse :)
0
ngounou25 Messages postés 96 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 5 juillet 2013 4
13 nov. 2012 à 15:25
Beh si ça t'as aidé, songe à marquer le sujet comme étant résolu ;-)
0