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 :

permutation des éléments d'une structure


Sujet :

C

  1. #1
    Membre du Club Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Points : 57
    Points
    57
    Par défaut permutation des éléments d'une structure
    Bonjour,
    Voici mon problème.
    J'ai une structure contenant 4 entiers, et je cherche à permuter 2 à 2 les éléments de cette structure.
    Je souhaite faire appel pour cela à la fonction permute, dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void permute (int *a, int *b)
    {
    int s;
    s= *a;
    *a=*b;
    *b=s;
    }
    Voici une proposition de programme proposée :
    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
    #include <stdio.h>
     
    //prototypage de fonctions
     
    void permute (int *a, int *b);
     
    //definition de la structure
    typedef struct Entier Entier; 
     
    struct Entier {
    int *n1;
    int *n2;
    int *n3;
    int *n4;
    };
     
     
    //point d'entrée
     
    int main () {
    struct Entier liste;
     
    printf ("\n rentrez un entier :");
    scanf("%d",n1);
    printf ("\n rentrez un entier :");
    scanf("%d",n2);
    printf ("\n rentrez un entier :");
    scanf("%d",n3);
    printf ("\n rentrez un entier :");
    scanf("%d",n4);
    permute (liste.n1,liste. n2);
    permute (liste.n3,liste.n4);
    printf("\n nouvel ordre : %d %d %d %d",liste.n1,liste.n2,liste.n3,liste.n4);
     
    return 0;
     
    }
     
    //definition de la fonction
    void permute(int *a, int *b) {
     
    int *tmp;
    tmp = a;
    a = b;
    b = tmp;
    seulement voila : ce programme ne fait pas appel, du moins, pas exactement, à la fonction permute que j'ai définie plus haut.
    De plus, j'ai quelques questions :
    - pourquoi ne fait-on pas appel à l'opérateur -> si souvent utilisé dans les structures?

    en vous remerciant d'avance

  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
    Citation Envoyé par nadsky Voir le message
    Bonjour,
    Voici mon problème.
    J'ai une structure contenant 4 entiers, et je cherche à permuter 2 à 2 les éléments de cette structure.
    Je souhaite faire appel pour cela à la fonction permute, dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void permute (int *a, int *b)
    {
    int s;
    s= *a;
    *a=*b;
    *b=s;
    }
    OK.
    Voici une proposition de programme proposée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //definition de la structure
    typedef struct Entier Entier; 
     
    struct Entier {
    int *n1;
    int *n2;
    int *n3;
    int *n4;
    };
    Attention, c'est une structure qui contient des pointeurs sur des entiers. Ils sont bien initialisés ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main () {
    struct Entier liste;
     
    printf ("\n rentrez un entier :");
    scanf("%d",n1);
    'n1' n'existe pas. Ce code est trop faux pour être compilable.

    Je pense que tu veux ça :
    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
     
    #include <stdio.h>
     
    /* definition de la structure */
    typedef struct
    {
       int n1;
       int n2;
       int n3;
       int n4;
    }
    Entier;
     
    /* definition de la fonction */
    static void permute (int *a, int *b)
    {
     
       int tmp;
       tmp = *a;
       *a = *b;
       *b = tmp;
    }
     
    /* point d'entrée */
     
    int main (void)
    {
        Entier liste;
     
       printf ("\n rentrez un entier :");
       scanf ("%d", &liste.n1);
       printf ("\n rentrez un entier :");
       scanf ("%d", &liste.n2);
       printf ("\n rentrez un entier :");
       scanf ("%d", &liste.n3);
       printf ("\n rentrez un entier :");
       scanf ("%d", &liste.n4);
       permute (&liste.n1, &liste.n2);
       permute (&liste.n3, &liste.n4);
       printf ("\n nouvel ordre : %d %d %d %d", liste.n1, liste.n2, liste.n3,
               liste.n4);
     
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     rentrez un entier :1
     
     rentrez un entier :2
     
     rentrez un entier :3
     
     rentrez un entier :4
     
     nouvel ordre : 2 1 4 3
    Process returned 0 (0x0)   execution time : 10.244 s
    Press any key to continue.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je voie déjà un problème, tu utilises une structure qui possède 4 pointeurs. Ces pointeurs ne sont jamais initialisés, ils pointent sur n'importe quoi.

    Question maintenant : pourquoi veux tu utiliser une structure de pointeurs ?
    Pourquoi pas une structure de 4 entiers.

Discussions similaires

  1. [Débutant] Reclassement des éléments d'une structure
    Par Thocius dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/07/2013, 19h20
  2. Permutation des éléments d'une matrice
    Par franz91 dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/03/2011, 10h12
  3. [CSS]Changer l'interligne des éléments d'une liste à puces
    Par khany dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/03/2005, 13h57
  4. tranférer des éléments d'une base
    Par john_wayne dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 21/06/2004, 15h33
  5. [VB.NET] Enregistrement des éléments d'une listBox
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/05/2004, 14h48

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