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 :

Probleme initialiser Structure


Sujet :

C

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Par défaut Probleme initialiser Structure
    Bonjour,
    Je suis a mes debuts en C et jaimerai savoir comment initialer et afficher la structure ci-dessous


    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
    #define Enfants_max 5
    #define Maxsize 30
     
    typedef struct
    {
    char nom[Maxsize];
    int  age;
    } enfant;
     
    typedef struct
    {
    enfant enfanTable[Enfants_max];
    int note;
    } resultat;
     
     
     
    void debuterEnfant(resultat* result_a, enfant enf_a);
    {
    ------
    }
     
    void AfficherEnfant(resultat* result_a, enfant enf_a);
    {
    ------
    }
    Merci

    Jessy

  2. #2
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Salut,

    tu peux faire :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int i=0;
    for(i=0; i < MAX_SIZE; i++) // je te conseille de mettre des majuscules pour les noms de constantes
    {
           enfant.nom[i]=0;
    }
    enfant.age=0;

    Voila

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 817
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jessica12 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct
    {
    char nom[Maxsize];
    int  age;
    } enfant;
     
    typedef struct
    {
    enfant enfanTable[Enfants_max];
    int note;
    } resultat;
    Salut
    Essaye de donner des noms à tes types qui permettront de ne pas les confondre avec des variables. Et
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct
    {
        char nom[Maxsize];
        int  age;
    } t_enfant;
     
    typedef struct
    {
        t_enfant tabEnfant[Enfants_max];
        int note;
    } t_resultat;

    Par ailleurs je ne comprends pas cette dernière structure. Elle contient n enfants mais une seule note ? Donc tous les enfants auront la même note ?

    Citation Envoyé par Jessica12 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void debuterEnfant(resultat* result_a, enfant enf_a);
    {
    ------
    }
    Pourquoi le paramètre 1 est-il un pointeur et pas le paramètre 2 ? Pour lui il y aura recopie totale du contenu de la structure d'origine. Par ailleurs le type "resultat" englobant déjà n enfants, à quoi sert le second paramètre ???
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void debuterEnfant(t_resultat *result)
    {
        int i,j;
        for (i=0; i < MAX_ENFANTS; i++)
        {
            for (j=0; j < MAX_SIZE; j++)
                result->tabEnfant[i].nom[j]=0;
            // Ou plus simplement memset(result->tabEnfant[i].nom, 0, MAX_SIZE)
     
            result->tabEnfant[i].age=0;
        }
         result->note=0;
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Par défaut
    bonjour, merci de votre reponse. la structure devrait etre celle-ci.
    Je voudrai permettre a l'utilisateur d'initier la structure (entrer nom, note et age) et de l'afficher comme suit( Enfant 1: nom1, age1, note1; Enfant2: nom2, age2,note2, etc...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    typedef struct
    {
        char nom[Maxsize];
        int  age;
        int note;
    } t_enfant;
     
    typedef struct
    {
        t_enfant tabEnfant[Enfants_max];
        int nbreEnfant;
    } t_resultat;
    void InscrireEnfant(t_enfant* Enfanti, t_resultat enfant resultat);
    Jess

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 817
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jessica12 Voir le message
    bonjour, merci de votre reponse. la structure devrait etre celle-ci.
    Je voudrai permettre a l'utilisateur d'initier la structure (entrer nom, note et age)
    et de l'afficher comme suit( Enfant 1: nom1, age1, note1; Enfant2: nom2, age2,note2, etc...)
    Ben oui. Si la note va avec l'enfant alors on la met dans la même structure. Je dirais même qu'étant donné qu'un enfant est susceptible d'avoir plusieurs notes, on devrait plutôt mettre un tableau de notes. Voire même s'amuser à gérer les différentes notes des différents enfants dans différentes matières mais je pense que c'est peut-être encore trop tôt...

    Citation Envoyé par Jessica12 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    typedef struct
    {
        char nom[Maxsize];
        int  age;
        int note;
    } t_enfant;
     
    typedef struct
    {
        t_enfant tabEnfant[Enfants_max];
        int nbreEnfant;
    } t_resultat;
    Ah ça j'aime bien. Une structure dédiée à la gestion du tableau d'enfants qui embarque donc le tableau et ses paramètres (comme sa taille et d'autres encore possibles). C'est le premier pas vers l'objet.

    Maintenant un peu d'optimisation. A moins d'un miracle, tes enfants ne dépasseront jamais 32767 ans et je vois mal leur âge être négatif. Il en va de même pour la note donc on peut les mettre en unsigned short (tu peux même descendre à l'unsigned char ce qui te permettra de gérer un âge allant de 0 jusqu'à 255 mais c'est moins parlant)
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    {
        char nom[Maxsize];
        unsigned short age;     // ou unsigned char age si tu comprends l'idée
        unsigned short note;   // pareil
    } t_enfant;

    Le tableau, lui, n'aura pas un nombre d'éléments négatif mais pourra bien entendu gérer plus de 32767 valeurs donc ici plutôt un unsigned long...

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct
    {
        t_enfant tabEnfant[Enfants_max];
        unsigned long nbreEnfant;     // Le type officiel et portable est "size_t"
    } t_resultat;

    Citation Envoyé par Jessica12 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    void InscrireEnfant(t_enfant* Enfanti, t_resultat enfant resultat);
    Là je ne pige pas trop ce second paramètre. Ni d'ailleurs quelle est ta question...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [win32]Problème initialisation slider
    Par pj69100 dans le forum MFC
    Réponses: 1
    Dernier message: 02/05/2006, 17h20
  2. C++ - Probleme avec structure et template
    Par vdumont dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 15h32
  3. Probleme taille structure / parsing tag mp3
    Par lucas_sophia dans le forum C
    Réponses: 6
    Dernier message: 19/03/2006, 16h56
  4. [Debutant] Probleme initialisation de references
    Par kiroukou dans le forum Débuter
    Réponses: 17
    Dernier message: 02/03/2005, 13h55
  5. Réponses: 3
    Dernier message: 28/09/2003, 17h08

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