Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2462 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  L'heure est grave [Comparaison de chaîne de caractères]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

L'heure est grave [Comparaison de chaîne de caractères]

n°1947261
Profil sup​primé
Posté le 04-12-2009 à 10:51:09  answer
 

L'heure est grave  :D  
 
Bonjour, merci de votre attention... Mes salutations les meilleurs.
 
Voilà que je bute sur un nouveau problème... J'ai un lexique des mots de la langue française trié dans l'ordre croissant en fonction du code ascii étendu.
Le fichier me semble être connu puisqu'il s'agit de la version 355 de Lexique Voir http://www.lexique.org/  
 
Pour comparer par moi même les mots selon leur ordre lexical j'ai écrit deux fonction "<" et ">".
 
Ces fonctions sont un poil particulière car elle doivent également permettre de comparer les mots en fonction de leur ordre d'indexation.
Je passe en suite ces deux fonction à un arbre binaire générique qui me sert de gestionnaire de données pour le lexique.
 
Seulement, pour quelque mots, ex : "à", "déséquilibrée" ; les mot ne sont pas trouvé à leur place au moment de la recherche.
 
Je viens donc chercher votre aide, en espérant trouver un solution.
 
 
Voici les deux fonctions et le type T_Word :
 
 

Code :
  1. type T_Word is
  2.      record
  3.         Item : T_Language := 0;
  4.         Word : Unbounded_String;
  5.      end record;


 

Code :
  1. function "<"(Left, Right : in T_word) return Boolean is
  2.      Left_String, Right_String : String(1..80) :=
  3.        (others => Character'Val(32));
  4.   begin
  5.      if Left.Item /= 0 and then Left.Item < Right.Item then
  6.         return True;
  7.      elsif Left.Item /= 0 and then Left.Item >= Right.Item then
  8.         return False;
  9.      end if;
  10.      Left_String(1..Length(Left.word)) := To_String(Left.word);
  11.      Right_String(1..Length(Right.word)) := To_String(Right.word);
  12.      for I in 1..Positive'Min(Length(Left.word), Length(Right.word)) loop
  13.         if Left_String(I) < Right_String(I) then
  14.            return True;
  15.         elsif Left_String(I) > Right_String(I) then
  16.            return false;
  17.         end if;
  18.      end loop;
  19.      if Length(Left.word) < Length(Right.word) then
  20.         return True;
  21.      end if;
  22.  
  23.      return False;
  24.   end "<";


 
 

Code :
  1. function ">"(Left, Right : in T_word) return Boolean is
  2.      Left_String, Right_String : String(1..80) :=
  3.        (others => Character'Val(32));
  4.   begin
  5.      if Left.Item /= 0 and then Left.Item > Right.Item then
  6.  
  7.         return True;
  8.      elsif left.Item /= 0 and then Left.Item <= Right.Item then
  9.         return False;
  10.      end if;
  11.      Left_String(1..Length(Left.word)) := To_String(Left.word);
  12.      Right_String(1..Length(Right.word)) := To_String(Right.word);
  13.      for I in 1..Positive'Min(Length(Left.word), Length(Right.word)) loop
  14.         if Left_String(I) > Right_String(I) then
  15.            return True;
  16.         elsif Left_String(I) < Right_String(I) then
  17.            return false;
  18.         end if;
  19.      end loop;
  20.      if Length(Left.word) > Length(Right.word) then
  21.         return True;
  22.      end if;
  23.      return False;
  24.   end ">";


 
S'il vous plaît ? Merci bien.

mood
Publicité
Posté le 04-12-2009 à 10:51:09  profilanswer
 

n°1947403
Profil sup​primé
Posté le 04-12-2009 à 14:56:26  answer
 

Hulp !
 
 :sweat:

n°1947471
Profil sup​primé
Posté le 04-12-2009 à 18:31:24  answer
 

Personne n'a d'idée de la raison pour laquelle certain mots avec caractère(s) accentué(s) ne sont pas trouvés ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  L'heure est grave [Comparaison de chaîne de caractères]

 

Sujets relatifs
Problème de caractères accentués sur Windows Vista en consoleafficher les combinaisons de chaine de caractères
Afficher un certain nombre de caractères dans une chaîne (S.O.S)comparaison mot de passe bd et formulaire
empêcher saisie caractères accentués en PHPcomparaison fausse de 2 entiers
Remplacer une chaine multiple dans un fichierChaine de caractère et HTML
Plus de sujets relatifs à : L'heure est grave [Comparaison de chaîne de caractères]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR