Citation :
voilà la fct strcmp me dit que la chaine "HOPITAL_BELLEVUE_01" est plus "petite" que "HOPIT._CLAUDINON_20" !
|
Bon c'est vrai que celà ne reflete pas la réalité !
je me suis embrouillé les neurones hiers, j'avais besoin de dormir !!
Bref, quoiqu'il en soit,
Code :
- test = strcmp ( "HOPITAL_BELLEVUE_01" , "HOPIT._CLAUDINON_20" );
|
me donne bien test=1, donc (maintenant étant bien reposé), que "HOPITAL_BELLEVUE_01" est superieur à "HOPIT._CLAUDINON_20" !!
Le problème est que quand j'ai rentré ces chaines dans mon dico, je ne me suis pas préccupé du classement alpha, puisque notre prof nous a assuré que c'était classé !
Donc, en lisant mon fichier, j'ai mis ces chaines dans mon tableau en correspondance avec la positin de lecture !!
Ainsi, quand je veux savoir en quelle posisiton "HOPITAL_BELLEVUE_01" se trouve dans mon tableau, je devrais avoir comme réponse 151 (c'est là que ce trouve cette chaine !)
149 --> HOPITAL_23
150 --> HOPITAL_28
151 --> HOPITAL_BELLEVUE_01
152 --> HOPITAL_BELLEVUE_04
153 --> HOPIT._CLAUDINON_20
154 --> HOTEL_DE_VILLE_04
|
(ici, les "xxx --> " ne figure pas dans mon fichier, mais c'est juste pour indiquer leur position respective vu qu'il y a 514 chaines à référencer !)
Pour la recherche du N° d'indice, j'utilise un alog de dichotomie :
Code :
- int Recup_Num ( char * mot , DICO * Le_Dico ) {
- int a, b, c, val, test;
- a = 1;
- b = Le_Dico->taille;
- test = 0;
- c = 0;
- while (c == 0){
- val = (b+a)/2;
- test = strcmp (mot,Le_Dico->tab[val]);
- if ( test == 0 ) { /* Ok c'est le mot */
- return val;
- }
- if ( test < 0 ) { /* il faut aller a gauche du tableau */
- b = val;
- }
- else { /* il faut aller a droite du tableau */
- a = val;
- }
- if ( a == b ) { /* le mot ne figure pas dans le dico */
- return -1;
- }
- }
- }
|
ici je passe mot="HOPITAL_BELLEVUE_01"
puis l'alog cherche :
1)
a=1 b=514 --> val=257
-->test=-1 --> b=val=257
2)
a=1 b=257 --> val=129
-->test=1 --> a=val=129
3)
a=129 b=257 --> val=193
-->test=-1 --> b=val=193
4)
a=129 b=193 --> val=161
-->test=-1 --> b=val=161
5)
a=129 b=161 --> val=145
-->test=1 --> a=val=145
Jusque là, tout va bien !!
6)
a=145 b=161 --> val=153
-->test=1 --> a=val=153
Là ca va plus !!!
d'après ces résultats, la chaine mot "HOPITAL_BELLEVUE_01" est plus grande que la chaine d'indice 153 qui est "HOPIT._CLAUDINON_20" !!
Or celà revient à dire que mon prof s'est planté dans le tri des ces chaines !!!
Et donc que "HOPIT._CLAUDINON_20" doit aller avant "HOPITAL_23", non ??
Voilà,
merci @+
Miles