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 :

Manipulation de chaine


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 55
    Par défaut Manipulation de chaine
    Bonjour,

    Je cherche a résoudre le pb suivant :

    comment verifier que tous les mots possibles avec les caracteres d'une chaine sont contenus dans un tableau de chaine :

    Par ex : verifier que pour "abc", on a bien "abc","acb","abc", Etc ... contenus dans un tableau de string

    J ai du mal avoir commen, pour la comparaison, on peut passer de "abc" a "acb"

    apres un strcmp devrait faire l'affaire, je suppose.

    par avance merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Le problème doit se résoudre en plusieurs étapes.

    Si on suppose que toutes les lettres du mot sont différentes, on pourrait :
    * parcourir tous les mots et vérifier que chaque lettre du mot initial y est incluse.
    * Et pour vérifier que tous les cas sont là. Les lettres sont différentes, donc il y a N! possibilités, avec N=strlen(mot). Il doit donc y avoir N! mots et tous les mots doivent être différents deux à deux.

    Si le mot peut avoir des lettres en double, il faut une autre méthode plus complexe.

    Dans tous les cas strcmp() ne sert à rien, mais on pourrait s'inspirer de son code et le modifier de pour écrire une fonction qui serait strsimilar():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int strcmp(const char* s1, const char* s2) {
       while ( *s1 == *s2  &&  *s1 != '\0'  &&  *s2 != '\0' ) {
          ++s1;
          ++s2;
       }
       // un des deux a atteint le bout ou on a trouvé une différence
       if ( *s1 == *s2 ) return 0;       // identiques jusqu'au bout
       if ( *s2 == '\0'  ||  *s1 > *s2 ) return 1; // s1 est supérieur
       return -1;                        // s2 est supérieur
    }

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Ton problème repose beaucoup sur la génération de la liste de toutes les permutations d'une séquence arbitraire.

    Réponds juste avec un papier et un crayon aux questions suivantes:
    • Quelles sont les permutations de {1}?
    • Quelles sont les permutations de {1, 2}?
    • Quelles sont les permutations de {3, 4}?
    • Quelles sont les permutations de {1, 2, 3}?
    • Quelles sont les permutations de {1, 2, 3, 4}?
    • Comment as-tu trouvé toutes ces réponses?
    • Si tu as toutes les permutations d'une séquence, quelles sont celles de la même séquence, augmenté d'un élément?

Discussions similaires

  1. Manipulation de chaines
    Par tchoukapi dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 04/09/2006, 17h41
  2. [D7] Manipulations de chaines
    Par jer64 dans le forum Delphi
    Réponses: 2
    Dernier message: 21/07/2006, 22h16
  3. [PLSQL] Manipulation des chaines.
    Par zero d dans le forum Oracle
    Réponses: 5
    Dernier message: 14/12/2005, 18h27
  4. Réponses: 4
    Dernier message: 20/08/2004, 10h59
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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