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 :

problemes de doublons en C


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut problemes de doublons en C
    Bonjour (:

    Je suis actuellement sur un exercice qui me me pose un petit probleme :

    Je prends en parametre deux chaines de caractere et je dois les faire matcher pour en déterminer les caractere qui s'y retrouvent, jusque la, pas de probleme.

    Ensuite on me demande de virer les doublons de mon resultat hors la je plante, je ne sais meme plus ou chercher, mon cerveau s'emmelle dans des boucle de conditions inconditionelle...

    Y a t'il un petite solution simple et efficace ?
    Un petit algo qui pourrait m'eviter de me planter par la suite ou meme simplement une direction a prendre pour que je continue mes recherches...

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Je crois que tu devrais commencer par mieux présenter ton problème (soutenu avec des exemples ...).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Alors des caracteres communs ce sont simplement des caracteres qui sont présents dans les deux chaines >> Communs au deux chaines (peux pas faire plus claire)

    Les doublons sont des caracteres qui vont se répéter simplement (apellation un peu barbard dont j'ai donné la définition dans le poste de rééxplication).

    Mon résultat est sous forme d'une chaine de caractere vue que je dois resortir les caracteres qui sont communs aux deux chaines... Pardon qui sont présents dans les deux chaines de caracteres passées en paramètre...

    Les supprimer reviendrait simplement a ne pas se retrouver avec des doubles ou triple ou que sais-je, caracteres (ou doublons pour les intimes) dans mon résultat sur ré explication... :

    Ne pas se retrouver avec "qqsdddsdfffsdf" par exemple mais simplement avec "qsdf"

    Je ne demande pas la solution toute machée mais juste un endroit ou je dois aller chercher ou juste une orientation pour pousser un peu plus loin...

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Si je comprend ton problème actuel :
    Ne pas se retrouver avec "qqsdddsdfffsdf" par exemple mais simplement avec "qsdf"
    Tu as une chaîne de caractères (ton "résultat") et tu veux que chaque lettre qui y figure n'y figure qu'une seule fois en supprimant les lettres en excédent.
    J'ai bon ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Soit chaineEntree1 et chaineEntree2 tes 2 chaines en entrée et chaineSortie la chaine en sortie.

    Pour chaque caractère de chaineEntree1, tu test si il est dans chaineEntree2, puis si il n'est pas dans chaineSortie. Si ce test est vrai, tu ajoute le caractère à chaineSortie.

    Ou alors tu écris une fonction qui prend en paramètre chaineSortie et qui retourne une chaine qui ne contient aucun doublon.

    Il est très possible que je n'ai pas compris correctement le problème.

  6. #6
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Donc tu veux pouvoir transformer "qqsdddsdfffsdf" en "qsdf"?
    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
     
    #include <string.h>
     
    char * supprimer_doublons(char * s)
    {
        int i, j;
        char c;
     
        /* on parcoure toute la chaine */
        for(i = 0, c = s[i]; c != '\0'; i++, c = s[i])
        {
            j = i + 1;
            /* on recherche tous les doublons */
            while (s[j] != '\0')
            {
                if (s[j] == c)
                    /* on supprime le doublon */
                    memmove(s + j, s + j + 1, strlen(s + j + 1) + 1);
                else
                    j++;
            }
        }
     
        return s;
    }
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <stdio.h>
     
    char * supprimer_doublons(char * s);
     
    int main()
    {
        char s[] = "qqsdddsdfffsdf";
        printf("%s\n", supprimer_doublons(s));
        return 0;
    }

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par yuyevon000 Voir le message
    Soit chaineEntree1 et chaineEntree2 tes 2 chaines en entrée et chaineSortie la chaine en sortie.

    Pour chaque caractère de chaineEntree1, tu test si il est dans chaineEntree2, puis si il n'est pas dans chaineSortie. Si ce test est vrai, tu ajoute le caractère à chaineSortie.

    Ou alors tu écris une fonction qui prend en paramètre chaineSortie et qui retourne une chaine qui ne contient aucun doublon.

    Il est très possible que je n'ai pas compris correctement le problème.
    Ouaip tu as tout compris et du premier coup

    >>> Bon je viens de trouver la soluce je vous la file histoire qu'on reste pas sur notre faim et qui sait ca peut servire a d'autres

    Tres simple en fin de compte, chaque caractere matché va se retrouver dans une chaine de caractere de teste, puis dans la chaine de resultat finale. la confition pour rentrer les autres caractere dans cette chaine de sortie finale sera de passer le teste du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (str[i] != str[j] && str[i] && chaine_de_test[k])
    Bien sur dans un while qui va dérouler la chaine de teste pour faire matcher tous les elements...

    La chaine de teste sera au préalable malloc(é) a str (la chaine a traiter pour les doublons) pour éviter les segfault rageant.

    Sur ceux bonne fin de soirée...
    -_____-"

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

Discussions similaires

  1. Problemes de doublons...comment les éviter?
    Par paflolo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/02/2006, 14h57
  2. [xslt] probleme de doublons
    Par boudha45 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 06/01/2006, 14h09
  3. [requete-sqlserver]probleme de doublons
    Par shirya dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/10/2005, 10h31
  4. Problème de doublon
    Par Oberown dans le forum Schéma
    Réponses: 1
    Dernier message: 09/09/2004, 16h06
  5. Probleme de doublons...
    Par kv000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/08/2004, 10h25

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