Tri un fichier sur la dernière colonne

Résolu
mouna1985 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
ngounou25 Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   3
 
Merci pour la réponse :)
0
ngounou25 Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   4
 
Beh si ça t'as aidé, songe à marquer le sujet comme étant résolu ;-)
0