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 :

exercice en c++


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Par défaut exercice en c++
    bonjour tous le monde
    je veux bien que vous m'aidez à résoudre un probème en POO,voici le problème:

    Créer une classe Personne représentée par un nom, un prénom et un âge. Le nom et le prénom seront représentés sous
    forme de tableau de 20 caractères et l’âge par un entier. On veut pouvoir créer des objets de type Personne soit en
    spécifiant le nom, le prénom et l’âge, soit en ne spécifiant rien, soit en spécifiant un objet Personne préexistant
    (constructeur de copie). Définir les constructeurs et destructeur associés. Afin de pouvoir tester la validité de votre
    classe, implémenter une fonction d’affichage : void affiche() const.
    Dans un autre fichier. Faire une fonction main permettant de tester votre classe. Ce programme
    de test créera un tableau de Personne avec différentes initialisations, affichera l’ensemble des
    objets Personne à l’aide de la fonction affiche() et détruira le tableau.


    vraiment j'ai du mal à démarrer!je comprend que dans l'ennoncé on me demande de crèer un tableau d'objets Or on demande aussi(en fait j'ai déduit) de définir un constructeur qui admet des paramètres "soit en
    spécifiant le nom, le prénom et l’âge".puis aprés on me demannde d'initialiser mes objets ça me dit que je doit déclarer mes attribut en public pour que je puisse faire tab[indice].attribut !!
    je vous serai trés reconnaissant si vous me donner un bout de fil pour commmencer merci d'avance pour votre éclairage

  2. #2
    Membre éprouvé Avatar de Xtrem_Voyageur
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2009
    Messages : 85
    Par défaut
    Ton énoncé est pourtant très clair.
    As tu lu ou assisté à un cours sur le langage?
    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
    class Personne
    {
    public:
    // Les constructeurs! (sers toi des listes d'initialisation)
    Personne(...ToComplete...) // ToDo  (Constructeur "tout en un" par exemple en utilisant les arguments par défaut)
    {}
    Personne(const Personne& p) // ToDo (même si dans ce cas, ce constructeur serait généré automatiquement et ferait un boulot correct vu le les types des champs de la classe..)
    {}
    
    //La fonction d'affichage!
    void affiche() const 
    {
    // ToDo : afficher une Personne à l'aide std::cout
    // Exemple d'implémentation :
    // std::cout << nom << " " << prenom << " (" << age << ")." << std::endl;
    }
    
    private:
    type_tableau_20_char nom; // ToDo : comment déclarer un tableau de 20 char?
    type_tableau_20_char prenom; 
    type_entier age; // ToDo : et un entier?
    };
    
    int main()
    {
    // ToDo : s'amuser avec la classe tout juste écrite et créer des objets Personne
    return 0;
    }

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Par défaut
    merci beaucoup c'est trés clair

  4. #4
    Invité de passage
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Par défaut
    svp pouvez vous me corriger le programme suivant :
    ce programme correspont au probleme de la classe personne posé precedemment.
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #ifndef personne
    #include <iostream>
    #include <string>
    using namespace std;
     class Personne
     {
                   char *nom [20];
                   char *prenom [20];
                   int age;
                   public:
                          Personne(int[] , int [], int );
                          Personne();
                          Personne(Personne &p);             
                          ~Personne();
     
                          void affiche();
     
    };
    #endif 
    #include "personne.h"
    #include"string.h"
    using namespace std;
     Personne::Personne(char *n, char *p, int a) // contructeur
                                        {
     
                                            strcpy(nom,n);
     
     
                                            strcpy(prenom,p);
                                            age=a;
                                            cout<< "construction d'un personne"<<endl;
                                            }
      Personne::Personne( personne & p) // constructeur par recopie
               {
                        personne.nom=  p.nom ;
                        personne.prenom=p.prenom ; 
                        personne.age=p.age;   
                        }      
      Personne::Personne() // constructeur par défaut
                        {
                                            strcpy(personne.nom="");
                                            strcpy(personne.prenom="");
                                            this.age=0;
     
     Personne:: ~Personne() // destructeur
                          {
                          cout<<"destruction du personne"<<endl;
                          delete []nom;
                          delete []prenom;
                          }
      void Personne:: affiche()
                          {
                               cout<< endl<<"nom:"<<nom<<endl<<"prenom:"<<prenom<<endl<<"age:"<<age<< endl;
                               }
    #include <cstdlib>
    #include <iostream>
    #include "personne.h"
    using namespace std;
     
    int main(int argc, char *argv[])
    {
     
     
        Personne A();
        Personne B("yousra","skiod",21);
        A.affiche();
        B.affiche();
     
     
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  5. #5
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 183
    Par défaut
    Citation Envoyé par ensaam Voir le message
    svp pouvez vous me corriger le programme suivant :
    ce programme correspont au probleme de la classe personne posé precedemment.
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #ifndef personne
    #include <iostream>
    #include <string>
    using namespace std;
     class Personne
     {
                   char *nom [20];
                   char *prenom [20];
                   int age;
                   public:
                          Personne(int[] , int [], int );
                          Personne();
                          Personne(Personne &p);             
                          ~Personne();
     
                          void affiche();
     
    };
    #endif 
    #include "personne.h"
    #include"string.h"
    using namespace std;
     Personne::Personne(char *n, char *p, int a) // contructeur
                                        {
     
                                            strcpy(nom,n);
     
     
                                            strcpy(prenom,p);
                                            age=a;
                                            cout<< "construction d'un personne"<<endl;
                                            }
      Personne::Personne( personne & p) // constructeur par recopie
               {
                        personne.nom=  p.nom ;
                        personne.prenom=p.prenom ; 
                        personne.age=p.age;   
                        }      
      Personne::Personne() // constructeur par défaut
                        {
                                            strcpy(personne.nom="");
                                            strcpy(personne.prenom="");
                                            this.age=0;
     
     Personne:: ~Personne() // destructeur
                          {
                          cout<<"destruction du personne"<<endl;
                          delete []nom;
                          delete []prenom;
                          }
      void Personne:: affiche()
                          {
                               cout<< endl<<"nom:"<<nom<<endl<<"prenom:"<<prenom<<endl<<"age:"<<age<< endl;
                               }
    #include <cstdlib>
    #include <iostream>
    #include "personne.h"
    using namespace std;
     
    int main(int argc, char *argv[])
    {
     
     
        Personne A();
        Personne B("yousra","skiod",21);
        A.affiche();
        B.affiche();
     
     
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    J'ai corrigé quelques erreurs pour t'aider mais tu devras quand même continuer toi même ; il y 'en a plein, tu devras faire attention au niveau des noms des classes parfois tu utilise Personne et parfois personne
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #include <iostream>
    #include <string>
    #include <cstdlib>
    using namespace std;
     class Personne
     {
                   char *nom [20];
                   char *prenom [20];
                   int age;
                   public:
                          Personne(char * , char *, int );
                          Personne();
                          Personne(Personne &p);
                          ~Personne();
     
                          void affiche();
     
    };
     
     
     Personne::Personne(char *n, char *p, int a) // contructeur
                                        {
     
                                            std::string nom=n;
     
     
                                            std::string prenom=p;
                                            age=a;
                                            cout<< "construction d'une personne"<<endl;
                                            }
      Personne::Personne( Personne &p) // constructeur par recopie
               {
                        std::string nom=  p.nom ;
                        std::string prenom=p.prenom ;
                        age=p.age;
                        }
      Personne::Personne() // constructeur par défaut
                        {
                                            std::string nom="";
                                          std::string prenom="";
                                            age=0;
                        }
     Personne:: ~Personne() // destructeur
                          {
                          cout<<"destruction du personne"<<endl;
                          delete []nom;
                          delete []prenom;
                          }
      void Personne:: affiche()
                          {
                               cout<< endl<<"nom:"<<nom<<endl<<"prenom:"<<prenom<<endl<<"age:"<<age<< endl;
                               }
     
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
     
     
        Personne A();
        Personne B("yousra","skiod",21);
        A.affiche();
        B.affiche();
     
     
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur avant-vente

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut
    Plusieurs remarques à faire :
    - Tu utilise des tableaux de chars, mais la tu programme pas en C mais en C++. Utilise plutôt des objets string (Si tu ne connais pas encore cette notion vas voir sur Google, c'est très simple d'utilisation).
    - Dernière remarque par rapport à ton premier message. Tu parle d'initialiser tes objets avec ça : tab[indice].attribut. Tout indique que tu as mal compris le principe d'encapsulation. Dans une classe tu met tes attributs en portée private ce qui t'empêche bien sur de faire objet.attribut (c'est plus "sécurisée" de cette façon). Pour palier à ce problème d'accès tu passe par tes méthodes, dont le constructeur. Ce sont tes constructeurs qui s'occuperont d'accéder à tes attributs et ainsi les initialiser correctement.

Discussions similaires

  1. [VB6] Exercice de Combinatoire
    Par fichtre! dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 19/01/2005, 14h27
  2. Un cours de C/C++ avec exercices corrigés
    Par merrheim dans le forum C++
    Réponses: 65
    Dernier message: 18/01/2005, 22h30
  3. Demande de corrections d'exercices Turbo Pascal
    Par Helpine dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 16/01/2005, 10h38
  4. Pages d'exercices à faire pour l'autoformation ?
    Par [thebadskull] dans le forum Evolutions du club
    Réponses: 13
    Dernier message: 15/06/2004, 20h26
  5. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

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