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 :

fonctions sur les chaines de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut fonctions sur les chaines de caractères
    bonjour,
    je cherche une fonction en C qui me permet de faire la ressemblance entre deux chaines de caractères
    par exemple: chaine1 = "ACDDEF" et chaine2= "OPCDDE" et j'aurai comme résultat: resultat = "CDDE"
    est-ce qu'il existe un fonction prédéfini en C qui réalise cette opération ou je dois la développer ??
    merci

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Tu souhaites bien extraire la plus longue sous-chaine commune à deux chaines ?

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    oui exactement

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Je pense que l'idéal est de la coder toi-même cette fonction car de toutes façons tu seras obligé de boucler pour tester les correspondances.

    [EDIT]
    Et vu que tu ne connais surement pas la longueur de la chaîne de sortie bin une telle fonction n'existe pas en C (standard du moins)
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    trouver la plus longue sous-chaîne commune à deux chaînes est un problème intéressant. La libc n'a pas de fonction permettant de faire cela, il faudra le coder toi-même. Une implémentation efficace n'est pas triviale (cf google). Mais les algorithmes restent accessibles.
    Tu aurais un peu plus de problèmes à trouver les sous-séquences communes, mais apparemment ce n'est pas ce que tu veux (heureusement).

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Un problème que je trouve effectivement aussi intéressant, je vais peut-être m'amuser avec, vu que j'ai un objet String que j'ai adapté à mon projet en cours, ça va le compléter :-D
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Membre chevronné
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Par défaut
    J'ai peut etre un algo pour ce genre de chose mais soit je passe à coté d'une difficulté, soit vous exagerez un peu sur le mot "difficile". Apres si vous voulez l'optimiser c'est sur que c'est pas le bon algo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    boucle sur le nombre d'elements de ta chaine (ici 1 à 6)
        boucle sur le nombre de caracteres (2 mini a 6 max)
            boucle sur l'origine de la chaine (0 a 6(max)-nombre de caracteres pris)
                boucle sur l'autre chaine pour le point de depart
                    test( chaine1 & chaine2 )
                        oui -> cool!
                        non -> tant pis
                    fin test
                fin boucle
            fin boucle
        fin boucle
    fin boucle
    Bon c'est du pondu en diagonal (je peux pas le tester ou je suis en ce moment) mais je pense que cela prend en compte tout les cas de figures.
    Avec une petite variable qui prend tout les resutats possibles, si tu le fais avec des indices croissants, tu return la variable. Si tu veux tenter par décroissance, il faut inverser tous les indices de boucle mais ton programme s'arretera bien plus vite et tu auras juste a return la premiere chaine commune que tu auras trouvé

    Voilou, apres je laisse aux pros du site le soin de pourfendre cet algo si il est faux et s'il est bon, bonne chance ^^

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

Discussions similaires

  1. Pb avec les fonctions sur les chaines de caractères.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/04/2008, 19h09
  2. Fonction sur les chaines
    Par joquetino dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/11/2005, 22h31
  3. xsl : test sur les chaine de caractère
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/07/2005, 15h43
  4. Réponses: 2
    Dernier message: 01/05/2004, 21h15
  5. [LG]Symbole # (dièse) et fonctions sur les chaînes
    Par James64 dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2004, 14h19

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