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 :

structure en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut structure en c
    bonjour,
    j'ai commencer hier un nouveau chapitre sur les strucures en C et j'ai un travail à rendre, éh oui déja sur ce même chapitre.
    voilà le début de la consigne :
    Ecrire une structure étudiant qui contient comme données:
    -le nom de l'étudiant
    -le prénom de l'étudiant
    -un tableau de 10 notes de l'étudiant

    voici donc ce que j'ai essayé de faire pour l'instant :
    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
     
    struct note
    {
     
     float notes;
     
    };
    struct Etudiant
    {
           char nom [31];
           char prenom [31];
           struct note notes[10];
     
    };
    cela vous parrait il bon?
    merci

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut,

    - Pas besoin de faire une structure pour les notes
    - Utilise une constante symbolique pour le nombre de notes
    - Utilise une autre constante pour la longueur max des noms et prenoms
    (la taille des buffers seraient alors cette longueur + 1)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    Citation Envoyé par Gruik
    Salut,

    - Pas besoin de faire une structure pour les notes
    - Utilise une constante symbolique pour le nombre de notes
    - Utilise une autre constante pour la longueur max des noms et prenoms
    (la taille des buffers seraient alors cette longueur + 1)
    je suis désolé mais je suis débutant en C et je n'est pas compris ce que vous me proposez de faire?
    comment faire une seul structure ac la fiche de l'étudiant er son tableau de 10 notes?
    Qu'est ce qu'une constante symbolique?
    Et qu'entendez vous par "Utilise une autre constante pour la longueur max des noms et prenoms
    (la taille des buffers seraient alors cette longueur + 1)"??
    merci

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Bah je sais pas, si ton prof voit ça et qu'ils vous l'a pas encore appris, c'est ptet qu'il vaut mieux pas le faire mais bon, une bonne pratique consiste à ne pas ecrire des nombres directement (ex : 10 et 30 dans ton cas) mais à passer par des "constantes symboliques", ce sont des identificateurs generalement en majuscule qui sont remplacés par leur valeur à la compilation.

    Et pour la structure note, on est pas obligé de faire une structure pour declarer un tableau.. "float notes[10];" suffit

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    merci,
    je pense avoir mieux compris et en ce qui concerne les constante symbolique il ne nous en a jamais parlé et à toujours écrits en numérique.
    merci

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    "Le monsieur te propose" de travailler avec une seule structure...

    Le but d'une structure, c'est, justement, de permettre de rassembler des choses qui n'ont a priori pas grand chose à voir entre elle (exemple: un tableau de caractère et un tableau d'entier)...

    "Le monsieur te propose aussi" d'essayer, autant que faire se peut, d'éviter les "nombres magiques" (AKA, ceux que tu sors de ton chapeau, tel un magicien )

    Au final, cela donnerait un code ressemblant à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /* voici nos deux "nombres magiques", on leur donne un nom et une valeur */
    #define MAXCHAINE 30
    #define MAXNOTES 10
    struct Etudiant
    {
    /* pour le nom et le prénom, il faut penser au '\0' final, tout en prévoyant
       MAXCHAINE caractères possibles */
        char nom[MAXCHAINE+1];
        char prenom[MAXCHAINE+1];
    /* et le tableau des notes */
        float Notes[MAXNOTES];
    }
    Le grand avantage de travailler comme cela (en utilisant chaque MAXCHAINE et MAXNOTES chaques fois que tu dois te reporter au nombre maximum d'éléments du tableau), c'est que, si un jour, tu souhaites autoriser 20 notes, ou que tu tombe sur un éleve qui a un nom à rallonge tel qu'il faut 50 caractères, tu n'aura qu'à modifier la valeur de MAXCHAINE ou de MAXNOTES, et le tour sera joué

    PS: excuses moi, mais je suis d'humeur taquine aujourd'hui
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    Merci pour ces explication masi n'ayant pas apris cela je ne pense pas que mon prof voi d'un bon oeil que je lui rende quelque chose hors programme (ss jeux de mots ^^) pour l'instant .

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    Voici les questions de mon énoncé :
    -Ecrire une structure étudiant qui contient comme données:
    -le nom de l'étudiant
    -le prénom de l'étudiant
    -un tableau de 10 notes de l'étudiant
    -ecrire une fonction afficher() qui permet d'afficher les propriétés d'un étudiant
    -ecrire une fonction lire() qui permet de lire les données fournis par l'utilisateur pour un étudiant
    -ecrire une fonction tri() qui permet de trier ds un ordre croissant les notes d'un étudiant fournis en paramètre. Pour le tri nous utiliserons la méthode de tri par insertion.

    voici ce que j'ai essayé de faire mais je ne comprend pas bien la différence entre les deux première question...

    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
     
    struct Etudiant
    {
           char nom [31];
           char prenom [31];
           float notes [10];
    };
     
    void afficher()
    {
    /*non compris*/
    }   
     
    void lire()
    {
    /*non compris*/   
    }
     
    void tri ()/*s'agit il bien de la bonne méthode de tri?*/
    {
    int t[10],i,j,x,min,max;
        for (i=0;i<9;i++)
        {
        indice =i;
        min = t[i]
            for (j=i+1;j<10;j++)
                if(t[i]<min)
                {
                            indice=j;
                            min=t[j];
                }
        x=t[i]
        t[i]=t[indice]
        t[indice]=xi
        }
    }
    merci pour votre aide...

Discussions similaires

  1. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  2. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  3. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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