petit prob de débutant

petit prob de débutant - Programmation

Marsh Posté le 15-06-2002 à 16:19:01    

mon problème est simple:
j'ai une classe client , dans laquelle je declare le nom, prenom,ville et des methodes set_nom, get_nom, ...
 
je voudrais faire un main qui demande "nom du client", on met un nom, il fait un set_nom, puis il affiche le resultat :"le nom est :" et il utilise le get_nom.
 
Mais je n'arrive pas à faire fonctionner ce prog.
Pouvez vous m'aider?
Merci

Reply

Marsh Posté le 15-06-2002 à 16:19:01   

Reply

Marsh Posté le 15-06-2002 à 16:24:55    

On pourrait t'aider si tu postais ton source...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-06-2002 à 16:27:19    

SVCDman a écrit a écrit :

mon problème est simple:
j'ai une classe client , dans laquelle je declare le nom, prenom,ville et des methodes set_nom, get_nom, ...
 
je voudrais faire un main qui demande "nom du client", on met un nom, il fait un set_nom, puis il affiche le resultat :"le nom est :" et il utilise le get_nom.
 
Mais je n'arrive pas à faire fonctionner ce prog.
Pouvez vous m'aider?
Merci  



En quel langage ?


---------------
Le site de ma maman
Reply

Marsh Posté le 15-06-2002 à 16:30:04    

Cherrytree a écrit a écrit :

En quel langage ?  



j'allais dire la même chose que harkonnen et CherryTree ;))


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 15-06-2002 à 16:30:12    

//main.cpp
 
#include "Client.h"
void main()
{
char string_temp [100] ;
Client toto;
cout << "Donner nom du client" << endl;
cin >>   string_temp ;
toto.set_Nom (string_temp ) ;
affich = new char [20] ;
affich = toto.get_Nom ();
cout << affich << endl;
}
-----------------------------------
//Client.h
 
class Client
{
char * Nom;
char * get_Nom()  ;
void set_Nom(char left [20]);
}
------------------------------------
//client.cpp
#include "Client.h"
 
 
Client::Client()
{
strcat ( Nom , "" );
char * Client::get_Nom()
{
    return Nom;
}
 
     
void Client::set_Nom(char left[20])
{
    strcat (Nom , left) ;
}

Reply

Marsh Posté le 15-06-2002 à 16:31:01    

EN C++
désolé j'avais oublié....

Reply

Marsh Posté le 15-06-2002 à 16:42:26    

ouh la la...
j'ai vaguement regardé, mais ton source est truffé d'erreurs !
 
je commence :

Code :
  1. void main()
  2. {
  3. char string_temp [100] ;
  4. Client toto;
  5. cout << "Donner nom du client" << endl;
  6. cin >>   string_temp ;
  7. toto.set_Nom (string_temp ) ;
  8. affich = new char [20] ;
  9. affich = toto.get_Nom ();
  10. cout << affich << endl;
  11. }
  12. -----------------------------------
  13. //Client.h  
  14. class Client
  15. {
  16. char * Nom;
  17. char * get_Nom()  ;
  18. void set_Nom(char left [20]);
  19. }


 
1ere erreur : set_Nom prend une chaine de 20 caractères en argument, et tu lui fournis une chaine de 100 caractères maxi
 

Code :
  1. strcat ( Nom , "" );


 
2ème erreur :  je pense que tu ferais mieux d'utiliser strcpy...
 

Code :
  1. affich = new char [20] ;


 
3ème erreur : il est ou le delete correspondant ?
 
y'en a surement d'autres, mais corrige déja celles-ci...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-06-2002 à 16:44:13    

merci  
je sais je suis nul en programmation, mais je débute.

Reply

Marsh Posté le 15-06-2002 à 17:03:43    

et puis aussi, déclares ton constructeur dans le fichier d'entete, n'oublie pas l'accolade fermante de ton constructeur, déclares tes variables membres en private, etc...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-06-2002 à 17:19:23    

Bon, dans mon infinie bonté, je te donne le corrigé. En bas de mon article. Comme ça, tu pourras essayer de le faire avant de le lire
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
D'abord la fonction principale :

Code :
  1. #include "Client.h"
  2. #include <iostream.h>
  3. int main(void)
  4. {
  5.        char string_temp [20] ;
  6.        char *affich = NULL;
  7.        Client toto;
  8.        cout << "Donner nom du client" << endl;
  9.        cin >>   string_temp ;
  10.        toto.set_Nom (string_temp) ;
  11.        affich = toto.get_Nom ();
  12.        cout << affich << endl;
  13. }


J'ai remplacé le new affich[20] par une initialisation de pointeur. Ce que tu faisais était inutile, vu que la mémoire est déja réservée.
 
Je t'ai aussi rajouté l'inclusion d'iostream, pour déclarer cout.
 
Ensuite, le header de ta classe :

Code :
  1. class Client
  2. {
  3. public:
  4.         Client();
  5.         char *get_Nom()  ;
  6.         void set_Nom(char left[20]);
  7. private:
  8.         char Nom[20];
  9. };


Je t'ai inclus la déclaration du constructeur, et je t'ai placé en private la chaine Nom, vu que tu l'initialises et que tu la lis via des méthode publiques.
 
Enfin, la classe Client :

Code :
  1. #include "Client.h"
  2. #include <string.h>
  3. Client::Client()
  4. {
  5. }
  6. char *Client::get_Nom()
  7. {
  8.         return Nom;
  9. }
  10.  
  11. void Client::set_Nom(char left[20])
  12. {
  13.         strcpy(Nom,left) ;
  14. }


Nul besoin d'initialiser Nom dans le constructeur, vu que tu l'initialises dans la fonction set_Nom.
 
Voila, j'ai pas testé ce code, mais s'il y a des erreurs, je te laisse les chercher et les corriger ;)
 
A+


Message édité par Harkonnen le 15-06-2002 à 17:21:40

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-06-2002 à 17:19:23   

Reply

Marsh Posté le 15-06-2002 à 17:39:40    

Plus sûr :
 

Code :
  1. #define TAILLE_MAX_NOM 20
  2. class Client
  3. {
  4. public:
  5.        Client();
  6.        const char* get_Nom() const;
  7.        void set_Nom(const char* left);
  8. private:
  9.        char Nom[TAILLE_MAX_NOM];
  10. };

Reply

Marsh Posté le 16-06-2002 à 15:57:51    

Merci beaucoup ça fonctionne parfaitement maintenant!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed