IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

comparer deux chaînes %


Sujet :

C

  1. #1
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut comparer deux chaînes %
    Bonjour à tous,

    Je voudrais comparer deux chaînes en établissant un %.

    Par exemple Toto est à 75% pareil à Tota.

    Y a déjà une fonction pour ça?


    JPD

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Non.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par J4e8a16n Voir le message
    Bonjour à tous,

    Je voudrais comparer deux chaînes en établissant un %.

    Par exemple Toto est à 75% pareil à Tota.

    Y a déjà une fonction pour ça?
    Non.

    Il faut comparer les chaines éléments par éléments et faire des comptes et un petit calcul de %.

    Mais je suppose qu'il faut d'abord qu'elles aient la même longueur, sinon, ça n'a pas de sens...

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ce n'est pas si simple.

    À mon boulot, on doit utiliser tout un algorithme compliqué pour ça, avec un histogramme des caractères présents dans les deux chaînes, un calcul pour les caractères à la même position relative, (plus un ajustement pour détecter l'ajout ou la suppression d'un caractère), et le tous utilisant des tables de pondération pour le résultat...

    Et on a *encore* des problèmes avec.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Très intéressant et peu encourageant.

    J'y travaille, mais pour arriver à un résultat disons, satisfaisant.

    Je pourrai tenter de le vendre s'il est bon ;-)

    Merci quand même. Je ne suis pas seul à bécher ça agrémente le voyage.

    JPD

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je l'ai fait pour les dates..

    L'algo est hypersimple..

  7. #7
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Voici mon ULM

    Je compare les deux chaînes avec strlen(1)/strlen(2) = %
    Je compare les deux chaînes avec strspn = %
    Je compte les mots de plus de trois lettres dans la deuxième chaîne qui sont [strstr] dans la première (Nombre trouvé/nombre possibles) = %

    Je dois établir une priorité pour ces trois valeurs.

    C'est ce qu'on appelle pondérer?

    JPD

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par J4e8a16n Voir le message
    C'est ce qu'on appelle pondérer?
    Je dirai oui.

    Pondérer, c'est donner plus ou moins de poids à certains paramètres de ton équation. C'est à peu près la même notion que les coefficient des différentes matières (math, histoire, français, ...) pour passer le bac.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Citation Envoyé par J4e8a16n Voir le message
    Je compare les deux chaînes avec strlen(1)/strlen(2) = %
    Je compare les deux chaînes avec strspn = %
    Je compte les mots dans la deuxième chaîne qui sont [strstr] dans la première (Nombre trouvé/nombre possibles) = %
    Ex: Je pose une question dans un newsgroup: Qu'est-ce que C?

    Réponse:

    >Qu'est-ce que le langage de programmation C?
    Le C est un langage de programmation qui fait chic.

    Résultats:

    --------------------------------------1---------------------------
    2 Qu
    4 est
    6 ce
    8 que
    10 le
    12 langage
    14 de
    16 programmation
    18 C
    --------------------------------------0---------------------------
    0 Le
    1 C -
    2 est -
    2 un
    3 langage -
    4 de -
    5 programmation -
    5 qui
    5 fait
    5 chic

    Caractères en début de la phraseA présents dans la phraseB 0 0.000000

    Qu'est-ce que le langage de programmation C? 44 caractères
    Le C est un langage de programmation qui fait chic. 52 caractères

    %longueurs- 0.87 44 caractères / 52 caractères

    %mots- 0.28 5/18

    1 / 1 Poucentage de comparaison ; 0.87

    -----------

    Quel est l'item le plus et le moins révélateurs?

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par J4e8a16n Voir le message
    Caractères en début de la phraseA présents dans la phraseB 0 0.000000
    euh.. Chez moi ça fait 6....

    • C
    • e(st)
    • l(angage)
    • d(e)
    • p(rogrammation)
    • l(e)


    pourquoi %mot = 5/18 ??? D'abord il y a 19 mots..

    tu en as 6 communs.. : le, C , est, de, langage, programmation

    la plus petite phrase est 9, la plus longue 10.

    Donc au minimum 6/10, au maximum 6/9 ...

  11. #11
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Suite à vos remarques, j'ai corrigé mon programme.

    J'ai analysé 100 lignes de "Madame Bovary":
    Nombre de lettres moyen par mot sur un texte de 100 lignes standard. 6.5
    et
    Nombre de lettres moyen par mot dans des courriels de news 5.7

    Je ne sais trop quoi en faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    --------------------------------------A---------------------------
    
    1  Qu
    2  est
    3  ce
    4  que
    5  le
    6  langage
    7  de
    8  programmation
    9  C
    --------------------------------------B---------------------------
    1  C
    2  est
    3  langage
    4  de
    5  programmation
    
    A-Qu'est-ce que le langage de programmation C?
    B-Le C est un langage de programmation qui fait chic.
    
    Caractères en début de la  phraseA  présents dans la phraseB     0 Blenght/strspn(phraseA, phraseB) 0.000000
    
    
    
    Si je compare en partant de l'origine strstr('C'), strstr("est") le résultat est peu fiable.
    % des longueurs B/A- 0.87 count2- 5 count1- 9 %mots 0.56 La différence des % entre les % longueurs de lignes et le % des nombres de mots 0.31
    Plus le chiffre est près de zéro plus c'est fiable.
    Quotient nombre de caratères et du nombre de mots en A 5.00

    La différence des % entre les % longueurs de lignes et le % des nombres de mots semble utile. Je pourrais faire des test et établir approximativement ce que représente les pourcentages 10, 20, 30, et.

    C'est pas génial ...

    JPD

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je crois qu'il faut éclaircir le problème...

    Il y en a deux là-dedans.

    • Le premier est la similitude de contenu. Là ça se base sur les mots. Il y a N% des mots d'une phrase se retrouvant dans le texte 2. On peut le multiplier par une similitude de phrase : la position consécutive des mots.

    • Le second est relativement sans signifcation pour un texte global. Il est valable pour un mot. C'est le % de lettres en commun.



    Il faut déjà savoir auquel de ces 2 problèmes tu t'attaques.

  13. #13
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Comparer deux chaînes
    Par philippef dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/07/2008, 16h46
  2. Comparer deux chaînes récupérées de MySQL
    Par Demosis dans le forum JDBC
    Réponses: 2
    Dernier message: 05/10/2007, 18h32
  3. comparer deux chaînes
    Par dams78 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 10/05/2007, 07h55
  4. Comparer deux chaînes de caractère
    Par natie_49 dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2007, 11h53
  5. Comparer deux chaînes de caractères
    Par camoa dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 10/12/2006, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo