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 :

tri alphabetique de chaines de caracteres


Sujet :

C

  1. #1
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut tri alphabetique de chaines de caracteres
    Bonjour,

    J'ai écris un petit programme en c qui doit trier alphabétiquement des chaines de carateres mais le soucis doit provenir de l'initialisation du tableau de chaines de caractere.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    void tri(char **);
     
    int main(void)
    {
     
        char **p;
        p=malloc(sizeof(*p)*3);
        int i;
        p[0]="bernard";
        p[1]="alain"; 
        p[2]="pierre";
     
        tri(p);
     
        for(i=0;i<3;i++) 
        {
                printf("%s",p[i]);
                system("pause");
     
        }
    }
     
    void tri(char **p)
    {
         int i,j;
         char* temp;
         for(i=0;i<3;i++)
         {     
     
               for(j=i+1;i<3;j++)
               {
                       if(strcmp(p[i],p[j])) 
                       {
     
                             temp=p[j];
                             p[j]=p[i];
                             p[i]=temp;
     
                       }   
     
               }
     
         }
     
    }
    Si quelqu'un a une idée !!!

    merci d'avance tchao

    charly
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Tu as déjà un souci dans la seconde boucle : ca devrait sûrement être j<3.
    Ensuite, la valeur renvoyée par strcmp est vraie si la chaîne est plus petite ou plus grande. Ce qui doit t'intéresser est de savoir si p[i] est plus grand que p[j] pour les inverser si nécessaire. Relis la doc de strcmp et tu auras la réponse. http://man.developpez.com/man3/strcmp.3.php

    Remarques sur le code:
    Il faudrait que tu passes la taille du tableau en paramètre de tri.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void tri (char **, int);
    N'oublie pas le return 0 à la fin de main.

  3. #3
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    C'est bon mon programme fonctionne. Merci pour ton aide.


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    void tri(char **,int);
     
    int main(void)
    {
     
        char **p;
        int i;
        int taille=3;
        p=malloc(sizeof(*p)*taille);
     
        p[0]="bernard";
        p[1]="alain"; 
        p[2]="pierre";
     
        tri(p,taille);
     
        for(i=0;i<taille;i++) 
        {                     
                printf("%s",p[i]);
                printf("\n");
        }
        system("pause");
        return 0;
    }
     
    void tri(char **p,int taille)
    {
         int i,j;
     
         char* temp;
         for(i=0;i<taille;i++)
         {     
     
               for(j=i+1;j<taille;j++)
               {
                       if(strcmp(p[i],p[j])>0) 
                       {
     
                             temp=p[j];
                             p[j]=p[i];
                             p[i]=temp;
     
                       }   
     
               }
     
         }
     
    }
    Tchao
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

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

Discussions similaires

  1. Tri de chaine de caractères
    Par matie7 dans le forum C
    Réponses: 7
    Dernier message: 14/12/2007, 00h53
  2. Tri Chaine De Caracteres ?
    Par A_B dans le forum C
    Réponses: 5
    Dernier message: 04/03/2007, 03h11
  3. Tri de chaines de caracteres
    Par oMeG4 dans le forum C
    Réponses: 7
    Dernier message: 24/02/2007, 19h55
  4. Probleme de tri de chaine de caractere...
    Par GESCOM2000 dans le forum Access
    Réponses: 12
    Dernier message: 28/12/2005, 13h43
  5. Probleme de tri de chaine de caractere...(BIS)
    Par GESCOM2000 dans le forum Access
    Réponses: 4
    Dernier message: 27/12/2005, 18h49

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