Test de similitude entre deux mots

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 517 fois - Téléchargée 38 fois

Contenu du snippet

les arguments mot1 et mot2 sont alphanumérique.
La fonction retourne le pourcentage de similitude entre les deux mots.

Source / Exemple :


Function test_de_similitude(mot1, mot2)

Dim flagcolonne(256)
Dim longueur
Dim ligne
Dim colonne
Dim dernier1
Dim premier0
Dim somme
Dim i
longueur = Len(mot1)
ligne = 1
colonne = 1
somme = 0
dernier1 = 1
premier0 = 0

For i = 0 To 255
    flagcolonne(i) = False
Next i

'examen des mots
While ligne <= longueur
    If flagcolonne(colonne - 1) = False Then
    'pas de coincidence dans cette colonne -> tester
        If Mid(mot1, ligne, 1) = Mid(mot2, colonne, 1) Then
        'les caractères étaient identiques
        somme = somme + 1
        'bloquer la colonne pour un nouveau test
        flagcolonne(colonne - 1) = True
        dernier1 = colonne
        'passage à la ligne et à la colonne suivantes
        premier0 = 0
        ligne = ligne + 1
        colonne = colonne + 1
        If colonne > Len(mot2) Then
            'dépassement de la limite droite
            'retour à la 1ère colonne
            colonne = 1
        End If
        Else
            'les caractères sont différents
            'marquer la première différence dans cette ligne
            If premier0 = 0 Then
                premier0 = colonne
            End If
            'dans la colonne suivante
            colonne = colonne + 1
            If colonne > Len(mot2) Then
                'trop loin sur la droite
                'retour à la 1ère différence constatée
                'et une ligne plus bas
                colonne = premier0
                If colonne = 0 Then
                colonne = 1
                End If
                premier0 = 0
                ligne = ligne + 1
            End If
        End If
    Else
        'colonne dèja occupée par une similitude
        colonne = colonne + 1
        If colonne > Len(mot2) Then
        'trop loin vers la droite
        'retour à la similitude précédente
            premier0 = 0
            ligne = ligne + 1
        End If
    End If
Wend
' somme contient le nombre de similitudes
' coefficient de similitude = somme / longueur
test_de_similitude = somme / longueur
End Function

A voir également

Ajouter un commentaire Commentaires
Messages postés
60
Date d'inscription
lundi 21 octobre 2002
Statut
Membre
Dernière intervention
7 octobre 2007

Tres bonne idée, mais d'une part la fonction bugge quand le premier mot est plus long que le deuxieme comme l'a dit jp50 et d'autre part, la fonction part un peu en vrille: par exemple, si on compare Lala et lala ca nous donne 50% et si on compare lala et Lala ca nous donne 75% (????). Sinon c un tres bon debut de code qu'il faudrait developper.
Bonne prog !
FirSteph :)
Messages postés
156
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
23 novembre 2011

Jai tt lu 2 fois et jè rien compri !
a koa sert la ligne et les colones?
Messages postés
45
Date d'inscription
samedi 14 avril 2001
Statut
Membre
Dernière intervention
3 janvier 2008

il faut que le premier mot sois plus grand que le deuxieme. Si 1er = M et le deuxieme = mot ca donne 100%

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.