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 :

tableau de pointeur+tri+coup de pouce svp


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 66
    Points : 61
    Points
    61
    Par défaut tableau de pointeur+tri+coup de pouce svp
    je voudrais trier les element contenue dans tab_e (tableau d'entier) de facon indirect dans le tablea de pointeur tab_p et je coince dans la fonction tri , svp liser la fonction tri() .. le code est correct le programme s'excute mais le tri ne se fait pas .. merci
    si vous pouvez m'aider ca serrai sympa
    merci d'avance

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include <stdio.h>
    #include <conio.h>
     
    void main ()
    {
    int tab_e[20],*tab_p[20];
    void initialise(int tab[],int *tabp[],int taille);
    void saisir(int *tabp[],int taille);
    void afficher(int *tabp[],int taille);
    void tri(int tab[],int *tabp[],int taille);
    clrscr();
    initialise(tab_e,tab_p,10);
    saisir(tab_p,10);
    afficher(tab_p,10);
    tri(tab_e,tab_p,10);
    afficher(tab_p,10);
    getch();
    }
     
    void initialise (int tab[],int *tabp[],int taille)
    {
    int i;
     for(i=0;i<taille;i++)
       {
       tabp[i]=&tab[i];
       }
    }
     
    void saisir(int *tabp[],int taille)
    {
    int i;
     for(i=0;i<taille;i++)
     {
     printf("Saisie l'element %d> ",i+1);
     scanf("%d",tabp[i]);
     }
    }
     
    void afficher(int *tabp[],int taille)
    {
    int i;
     for(i=0;i<taille;i++)
     {
     printf("element %d",i+1);
     printf(":%d \n",*tabp[i]);
     }
    }
     
    void tri(int tab[],int *tabp[],int taille)
    {
    int i,j,pos,min=0,*aux;
     
     for(i=0;i<taille;i++)
     {
    min=i;
      for(j=i+1;j<taille-1;j++)
      {
     
       if(tab[j]<tab[min])
        {
         min=j;
        }
      }
     
        aux=tabp[i];
        tabp[i]=tabp[j];
        tabp[j]=aux;
     
     }
     
    }

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: ltab pointeur+tri+coup de pouce svp
    Citation Envoyé par php4life
    je voudrais trier les element contenue dans tab_e de facon indirect dans le tablea de pointeur tab_p et je coince dans la fonction tri
    qsort().
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Points : 135
    Points
    135
    Par défaut
    Wikipedia -> Tri Rapide (Quick sort)

    http://fr.wikipedia.org/wiki/Tri_rapide

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    salut Emmanuel
    je voudrais ecrire un algorithme de tri ..; et pour qsort si tu pouvais me donner un chtit exemple (je debute ;/)
    merci.

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Points : 135
    Points
    135

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par php4life
    salut Emmanuel
    je voudrais ecrire un algorithme de tri ..; et pour qsort si tu pouvais me donner un chtit exemple (je debute ;/)
    merci.
    Tu veux réinventer la roue ? Le langage C fourni une fonction de tri universelle, ça ne te va pas ?
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par php4life
    salut Emmanuel
    je voudrais ecrire un algorithme de tri ..; et pour qsort si tu pouvais me donner un chtit exemple (je debute ;/)
    merci.
    Tu veux réinventer la roue ? Le langage C fourni une fonction de tri universelle, ça ne te va pas ?
    je suis dacord avec toi , mais j'aurai besoin de faire ma propre fonction de tri -croisant ou decroissant) , en faite l'algoritheme est bon si je l'essai sur un tableau d'entier .. mais la jevoudrais trier tab_p (trier les adresses) , je nesais pas si je me fait bien comprendre ?
    aux=tabp[i];
    tabp[i]=tabp[j];
    tabp[j]=aux;
    je block ici ^

    voila

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par php4life
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par php4life
    salut Emmanuel
    je voudrais ecrire un algorithme de tri ..; et pour qsort si tu pouvais me donner un chtit exemple (je debute ;/)
    merci.
    Tu veux réinventer la roue ? Le langage C fourni une fonction de tri universelle, ça ne te va pas ?
    je suis dacord avec toi , mais j'aurai besoin de faire ma propre fonction de tri -croisant ou decroissant) , en faite l'algoritheme est bon si je l'essai sur un tableau d'entier .. mais la jevoudrais trier tab_p (trier les adresses) , je nesais pas si je me fait bien comprendre ?
    Laisse moi en douter, regarde ce lien pour les algo..

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 66
    Points : 61
    Points
    61
    Par défaut kestion
    bon, une question ..
    comment permuter le centenue de 2 elements d'un tableau de pointeur????

  10. #10
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 66
    Points : 61
    Points
    61
    Par défaut voila
    bon merci en tout cas

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: kestion
    Citation Envoyé par php4life
    bon, une question ..
    comment permuter le centenue de 2 elements d'un tableau de pointeur????
    L'idée est de justement ne pas permuter les valeurs pointée (perte de temps inutile, données, pas forcément modifiables, taille inconnue), mais les valeurs des pointeurs :
    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
     
    #include <stdio.h>
     
    /* generic pointer swapper */
    static void swap_p (void *pa, void *pb)
    {
       void const **ppa = pa;
       void const **ppb = pb;
       void const *p = *ppa;
       *ppa = *ppb;
       *ppb = p;
    }
     
    int main (void)
    {
       char const *a = "hello";
       char const *b = "world";
     
       printf ("%s %s\n", a, b);
     
       swap_p (&a, &b);
     
       printf ("%s %s\n", a, b);
     
       return 0;
    }
    Cette version 'générique' est pratique, car elle regle le cas de n'importe quel pointeur sir objet. Mais elle est 'sans filet' (pas de contrôle de type)

    On peu sécuriser l'usage par une surcouche spécialisée (donc typée) en fonction du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    static void swap_pchar (char const **ppa, char const **ppb)
    {
       swap_p (ppa, ppb);
    }
     
    static void swap_pint (int const **ppa, int const **ppb)
    {
       swap_p (ppa, ppb);
    }
    etc. (Facilement 'macroisable'...)
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 66
    Points : 61
    Points
    61
    Par défaut la fonction tri
    pour la fonction tri c bon elle marche vioci le code

    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
    void tri(int tab[],int *tabp[],int taille)
    {
    int i,j,pos,min=0,*aux;
     
     for(i=0;i<taille-1;i++)
     {
    min=i;
      for(j=i+1;j<taille;j++)
      {
     
       if(*tabp[j]<*tabp[min])
        {
         min=j;
        }
     
      }
     
      if(min != i)
      {
        aux=tabp[i];
        tabp[i]=tabp[min];
        tabp[min]=aux;
        }
     
     }
     
    }
    Emmanuel Merci pour ton code mais je suis encore en plein apprentissage , donc les ** je ne manipule pas et pour "static" je ne sais pas grand chose bien que ton code repond bien ama question . en tout cas avec tri() je m'en sort ...
    voila

  13. #13
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Points : 135
    Points
    135
    Par défaut
    Le mot-clé (keyword) static devant une fonction signifie que la fonction ne peut-être appellée que dans le fichier où elle se trouve (en l'occurence main.c).

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

Discussions similaires

  1. ZEOS : encore un petit coup de pouce svp
    Par llewsor dans le forum Débuter
    Réponses: 6
    Dernier message: 21/01/2013, 16h51
  2. un petit coup de pouce svp
    Par freestyle83 dans le forum Langage
    Réponses: 6
    Dernier message: 17/03/2011, 13h19
  3. TRI RAPIDE D'un tableau de pointeur dure!
    Par pierrotibus dans le forum C
    Réponses: 16
    Dernier message: 05/09/2007, 20h47
  4. Tri de tableau par pointeurs
    Par colocolo dans le forum Pascal
    Réponses: 9
    Dernier message: 19/02/2007, 21h02
  5. un petit coup de pouce svp ;)
    Par softstar dans le forum C++
    Réponses: 14
    Dernier message: 11/05/2006, 09h20

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