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 :

programme en c++


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut programme en c++
    Bonjour,
    j'ai un exercice en c++ j'ai essayé de commencer mais je me blogue sur une partie voici l'enoncé:
    1) definir la classe personne contenant:
    les données suivantes:
    - nom et prenom
    - date de naissance
    - sexe
    - adresse
    les fonctions suivantes:
    - afficher : pour afficher les informations concernant une personne donnée
    - getpersonne : pour afficher le nom et le prenom d'une personne
    - setadresse : pour changer l'adresse d'une personne

    on veut creer une classe Etudiant derivée de la classe Personne en ajoutant deux membres donnés diplome et note
    2) definir la classe etudiant
    3) ecrire une methode qui affiche le diplome et la note d'un etudiant avec sa mention.

    pour gerer l'ensemble des etudiants, definir une classe listeEtudiant permettant de creer et de remplir un tableau d'etudiants. cette classe doit contenir les methodes suivantes:
    - admis : qui affiche les noms des etudiants ayant la moyenne
    - appartient : permettant de verifier l'existence d'un etudiant dans la liste des etudiants
    - notemax : qui affiche le nom de l'etudiant qui a la note maximale
    - creerliste : fonction permettant de copier le contenu du tableau dans une liste
    4) definir la classe listeEtudiant


    voici le debut de mon programme disons je me suis arreté au 2):

    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
    Class Personne
    {
    Char nom [20] ;
    Char prenom [20];
    Date date_naissance ;
    Char sexe [10];
    Char adresse [30];
    Public :
    Personne (char, char, date, char, char) ;
    Void afficher () ;
    Void getpersonne () ;
    Void setadresse () ;
    }
     
    Personne :: Personne (char n, char p, date dn, char s, char a)
     
    {
    Strcpy (nom, n);
    Strcpy (prenom, p);
    Date_naissance = dn ;
    Strcpy (sexe, s) ;
    Strcpy (adresse, a) ;
    }
     
    Void Personne :: afficher()
     
    {
    Cout << "nom :" << nom  \n ;
    Cout << "prenom :" << prenom  \n ;
    Cout << "date de naissance" << date_naissance  \n ;
    Cout << "sexe :" << sexe  \n ;
    Cout << "adresse :" << adresse  \n ;
    }
     
    Void Personne :: getpersonne()
     
    {
    Cout << "son nom est :" << nom \n ;
    Cout << "son prenom est :" << prenom \n ;
    }
     
    Void Personne :: setadresse()
     
    {
    Delete adresse ;
    Cout << "entrer la nouvelle adresse : \n" ;
    Cin >> adresse
    Cout << "sa nouvelle adresse est : "<<adresse \n ;
    }
     
    Class Etudiant : public Personne
    {
    Char diplôme [20] ;
    Int note ;
    Public :

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Quelques remarques:
    1/Le C++ distingue la casse : donc ce n'est pas Char mais char (et ainsi de suite pour beaucoup de mots clés).
    2/Pour les chaînes de caractère, il vaut mieux utiliser std::string (à priori, rien ne l'interdit dans ton énoncé),
    3/A ma connaissance, il n'existe pas de type standard Date?
    4/ Char sexe [10]; ? A mon sens, il n'existe que 2 genres dans l'espèce humaine : mâle ou femelle. Si tu veux gérer les trans, tu peux utiliser boost::tribool (cette dernière phrase n'a comme unique but de fournir une pub à mon tuto )
    5/ Si tu maintiens tes chaînes par des tableaux de char, pourquoi le constructeur ne prend-il qu'un char et pas un tableau de char (Personne (const char*nom_...)?
    6/ delete ne doit être appelé que pour les données allouées dynamiquement avec un new. Dans Personne :: setadresse, delete adresse, est une erreur.
    6 bis/ Dans Personne :: setadresse, à supposer qu'adresse est été précédemment allouée, si tu fais un delete adresse puis un cin>>adresse sans réallouer, c'est l'erreur garantie car tu ne fournis pas une zone mémoire valide
    7/ 6/ et 6 bis/ doivent fortement t'encourager à utiliser std::string !
    8/ Classe Etudiant : diplôme : il est chaudement recommandé de n'utiliser pour les noms des variables&membres que des caractères non accentués (plus les chiffres et le _ mais pas en début).
    9/ Ben, qu'est-ce qui te bloque pour pouvoir continuer?

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Avec ça, on peut faire BOOL_TRIBOOL_THIRD_STATE(FileNotFound) ?
    Cool!
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut
    merci pour vos reponses mais s'il vous plait essayez de me donner quelquesz exemples a partir du sujet parce que la je suis un peu perdu merci

  5. #5
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par défaut
    Ou est le problème ?
    Tu as défini ta classe étudiant. Ajoutes lui des méthodes std::string getDiplome() const et int getNote() const par exemple (notes que j'ai supposé que tu avais utilisé les std::string et non les Char[] comme conseillé précédemment.)

    Appliques déjà tout ce qu'a dit 3D Archi plus:
    Une bonne pratique serait d'utiliser const sur tes méthodes qui ne modifies pas ta classe.
    Je te donnes le début à toi de faire le reste:
    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
     
    #include <vector> //pour ta liste d 'etudiant
    #include <string>
    #include <iostream>//pour les flux, cout, cin mais il serait mieux de séparer déclaration (.h) et définition (.cpp) pour plus de clarté
     
    class Date
    {
      int m_jour;
      int m_mois;
      int m_annee;
      Date(int jour, int mois, int annee):m_jour(jour), m_mois(mois),m_annee(annee)
    {}
    };
     
    Class Personne
    {
    protected://pour que Etudiant puisse les utiliser
    std::string m_nom;//utiliser m_ pour les membres d'une classe est une bonne habitude
    std::string m_prenom;
    Date m_date_naissance;//ok mais à toi de défnir Date avant
     
    /*etc*/
    public:
    Personne();
    Personne(const std::string &nom, const std::string &prenom);
    void afficher() const//la logique veut qu'un affichage ne modifies pas la classe donc --> const
    {
      std::cout<<"nom:"<<m_nom<<std::endl;
    };
    void setadresse (const std::string &adresse) {m_adresse=adresse;}//passage par reference constante
     
     
    };
     
    class Etudiant : public Personne
    {
    private:
      std::string m_diplome;
      int m_note;
     
    public:
      Etudiant();
      Etudiant(const Personne &p);//peut etre utile
      Etudiant(const std::string &nom, const std::string &prenom) : Personne(nom,prenom){};
      std::string getDiplome() const {return m_diplome;}
      int getNote() const {return m_note;}
    /* Et voila à toi de jouer pour le reste*/
    };
    Pour les passage par référence et autre subtilité du c++ je te renvoi vers la faq et les tutos de dvp (cf liens en bas de page)
    Et pour listeEtudiant renseigne toi d'abord sur les std::vector et les questions suivantes ne te poseront aucun problème

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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