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 :

Je débute en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut Je débute en C++
    Bonjour

    Je commence des exercices simples en programmation mais je suis un peu perdu, j'aurais besoin de votre aide pour commencer


    Construire une class Animal qui a pour attribut une chaine de 10 caracteres et un integer age
    La class Animal a 3 constructeurs ayant pour parametre respectif
    - un pointeur animal
    - un entier
    - une reference animal

    La class Animal a pour fonction membre Affiche qui affiche ses attributs
    et une fonction membre initage
    qui prend un parametre entier pour mettre à jour l'age de l'animal
    Faire une fonction Main qui utilise toutes les fonctions définies avec les objets
    suivants :
    Animal *A;
    Animal An;




    Une proposition de 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
    class animal
    {private: // A ne pas oublier! POO=encapsulation=>il faut préciser si c'est du public, private, protected.
    int m_age;
    char nom[11];//Ca devrait aller pour la chaine de caractère nom... ?
     
    public: // A ne pas oublier! POO=encapsulation=>il faut préciser si c'est du public, private, protected.
     
    //Les constructeurs:
    animal(int);
    animal(*animal);
    animal(&animal);
    //Les autres méthodes:
    void affiche(animal);
    void initage(animal);
    //Le destructeur: optionnel ici?};
     
    //Les méthodes ??:calim2:

    Je n'ai pas encore fait beaucoup de C++, donc sous réserves d'erreurs ^^" !

  2. #2
    Membre confirmé Avatar de buse974
    Homme Profil pro
    Développeur / Chef de projet informatique
    Inscrit en
    Février 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur / Chef de projet informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 117
    Par défaut
    Salut.

    Donc ca a l'aire plutot bien pour le header a premiere vu, quelque petite chose tout de meme
    j'ai mis des commentaires
    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
     
    class animal
    {
     
    private: 
     
    int m_age;
    char nom[11];
     
     
    public:
     
    //Les constructeurs:
    animal(int age);
    animal(animal *animal); // ici il faut préciser le type de animal qui et animal
    animal(animal &animal); // pareil qu'en haut.
    //Les autres méthodes:
    void affiche(); // pas besoin de parametre tu ira chercher dans ta methode les atributs qui vont bien 
    void initage(int age); // on attend ici dans ton accesseur un entier donc INT 
     
    };
    voila pour ton header reste a définir tes methodes.

  3. #3
    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
    Salut,
    Et bien commençons par te souhaiter un bon courage dans ton apprentissage
    Tu m'as l'air bien parti. Juste quelques remarques :
    -> * ou & se mettent après le type et non avant. Ainsi, tes constructeurs devraient se déclarer comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    animal(animal*);
    animal(animal&);
    Si l'objectif d'un constructeur avec une référence est de faire un constructeur de copie, alors il faut que la référence soit constante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    animal(animal const &);
    Ton exercice spécifie que initage prend en argument un entier. Et toi tu lui passes un animal. D'abord, il faut savoir que l'objet sur lequel s'applique la fonction n'a pas besoin d'être passé en argument. Il est implicite lors de l'appel. Tu ne dois que fournir les autres paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class animal
    {//[...]
    void initage(int);
    };
     
    int main()
    {
    animal un_animal;
    un_animal.initage(5);
    }
    Enfin, à moins que ce ne soit explicitement spécifié par ton prof, tu devrais utiliser std::string pour les chaînes de caractères et non un tableau de char de taille constante.

    Enfin, n'hésites pas à consulter les cours et la F.A.Q. pour t'aider à démarrer dans ton apprentissage.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut
    sans lire vos messages, j'ai travaillé sur le code je vous donne donc le code et je regarde votre travail, en vous remerciant..

    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
    class animal 
    {
      private : 
     
    int m_age; 
    char nom[11];
     
    public : 
     
    //Les constructeurs 
     
    animal(int); 
    animal(int , char[]);   // 
    animal(animal &); 
     
    //Les autres méthodes
     
    void affiche();   // 
    void initage(int ); 
     
    };
     
     
    // definition des constructeurs
    animal::animal(int a)
     {
        m_age = a ;
        nom[0] = '\0';
     }
     
    animal::animal(int a,char name[])
      {
          m_age = a ;
          strcpy(nom,name);
      }
     
    animal::animal(animal & anim)
      {
        m_age = anim.m_age;
        strcpy(nom,anim.nom);
      }
     
    void animal::affiche()
       {
          cout << "le nom : " << nom << endl ;
          cout << "l'age : " << m_age << endl ;
       } 
     
    void animal::initage(int a)
      {
         m_age = a; 
      }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut
    Voila la 2eme partie, c'est une notion d'heritage mais ça reste confus pour moi

    Soit la class domestique qui derive de animal et qui a un attribut identifiant entier
    Domestique a un constructeur qui a pour parametre deux entiers et une fonction membre affiche
    qui affiche ses parametres
    Faire une fonction main utilisant l'ensemble de ses fonctions Membre
    avec Domestique D;
    Domestique *Dm;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut
    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
     
     
    class domestique
    {
    public :
     
    Animal*animal;
    domestique (Animal*A)
     
    Domestique : : domestique (int a, int b)
     
    void domestique : : affiche()
    {
    cout<<"le nom:"<<nom<<endl;
    cout<<"l'age:"<<m-age<<endl;

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut
    Bonjour

    J'aimerai connaitre votre avis sur ma soluce
    n'ayant pas de réponse, je crains que le code ne soit pas vraiment comment dire, dans l'esprit du c++
    un petit coup de main me mettra sur les rails.merci d'avance

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mactor 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
    13
    14
    15
    16
    17
    18
    19
    20
    class animal
    {
    private:
        int m_age;
        char nom[11];//Ca devrait aller pour la chaine de caractère nom... ?
     
    // ...
     
    // definition des constructeurs
    animal::animal(int a)
     {
        m_age = a ;
        nom[0] = '\0';
     }
     
    animal::animal(int a,char name[])
      {
          m_age = a ;
          strcpy(nom,name);
      }
    Les chaines de caractères, c'est assez complexe. Ton code pose de nombreux problèmes (taille, affectation, recopie) qui sont tous résolus si tu utilises std::string à la place de char* :
    http://cpp.developpez.com/faq/cpp/in...p?page=strings

Discussions similaires

  1. Divers problèmes d'affichages ! je débute..
    Par X-Files dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/12/2005, 23h51
  2. [DOM] Problème XML (je débute désolé....)
    Par canonbis dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/03/2005, 13h43
  3. Réponses: 2
    Dernier message: 10/12/2004, 15h52

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