begin process at 2012 05 30 10:58:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

un pti prob ... :s help


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

un pti prob ... :s help

vendredi 26 décembre 2008 à 17:56:48 | un pti prob ... :s help

meksoft002

Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "personne" seulement là....quand je sort de ma fonction "créer"...le contenu du tableau s'efface....j'ai essayé à l'interieur de la fonction le tableau contient ce que je lui ai entré.... s'il vous plait si c'est un probleme de variable temporaire ....dites le moi et dites comment le contourner sans rendre la fonction amie le prog: #include #include #include class Personne{ char *nom; char *prenom; unsigned int age; public: Personne(); Personne(char*,char*,unsigned int); Personne(Personne&); ~Personne(); void affichage(); void modifier(); void clonage (Personne &); Personne& operator=(Personne&); int operator==(Personne&); //friend void creer (Personne *tab,int n); //friend void afficher (Personne *tab); }; Personne::Personne(){ nom=NULL; prenom=NULL; age=0; } Personne::Personne(char *a,char *b,unsigned int c){ nom=new char[20]; strcpy(nom,a); prenom=new char[20]; strcpy(prenom,b); age=c; } Personne::~Personne(){ nom=NULL; prenom=NULL; } void Personne::affichage(){ cout<<"\n------------------"; cout<<"\nLe nom "<<nom<<"\nLe prenom "<<prenom<<"\nL'age "<<age; cout<<"\n------------------"; } Personne::Personne(Personne&p){ clonage(p); } void Personne::modifier(){ int c; char *chaine; int age2; cout<<"\nQuoi changer\n<1>. nom\n<2>. prenom\n<3>. age\n"; cin>>c; switch(c){ case 1:cout<<"\nVeuillez entrer la nouvelle chaine..."; cin>>chaine; strcpy(nom,chaine); break; case 2:cout<<"\nVeuillez entrer la nouvelle chaine ..."; cin>>chaine; strcpy(prenom,chaine); break; case 3:cout<<"\nVeuillez entrer la nouvelle valeur ..."; cin>>age2; age=age2; break; } } Personne& Personne::operator=(Personne& p){ if(this!=&p){ delete nom; delete prenom; nom=new char[20]; prenom=new char[20]; clonage(p); } return *this; } int Personne::operator==(Personne& p){ if(!strcmp(nom,p.nom) && !strcmp(prenom,p.prenom) && age==p.age) return 1; return 0; } void Personne::clonage(Personne &p){ strcpy(prenom,p.prenom); strcpy(nom,p.nom); age=p.age; } void creer(Personne *tab,int n){ tab=new Personne[n]; char *chaine1=new char[20]; char *chaine2=new char[20]; int c; for(int i=0;i<=n;i++) {cout <<"\nNom : ";cin>>chaine1; cout <<"\nPrenom : ";cin>>chaine2; cout <<"\nAge : ";cin>>c; (*(tab+i))=Personne (chaine1,chaine2,c); } //tab[0].affichage();---->sa marche bien } void afficher(Personne *tab,int n){ for(int i=0;i<=n;i++){ (*(tab+i)).affichage(); } } void main(){ clrscr(); Personne p1("tow" , "tiw" , 20 ); Personne p2("gj,","hic",41); p1.affichage(); p2.affichage(); p2.modifier(); p2.affichage(); p2=p1; p2.affichage(); /*********************************************/ int n=2; Personne *tab; creer(tab,n); (*tab).affichage(); //tab[0].affichage();---->sa ne donne rien :s getch(); afficher(tab,n); /*********************************************/ getch(); }
vendredi 26 décembre 2008 à 18:00:18 | Re : un pti prob ... :s help

meksoft002

Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "personne"
seulement là....quand je sort de ma fonction "créer"...le contenu du tableau s'efface....j'ai essayé à l'interieur de la fonction le tableau contient ce que je lui ai entré....
s'il vous plait si c'est un probleme de variable temporaire ....dites le moi et dites comment le contourner sans rendre la fonction amie

le prog:

<code>#include <iostream.h>
#include <conio.h>
#include <string.h>

class Personne{
char *nom;
char *prenom;
unsigned int age;

public:
Personne();
Personne(char*,char*,unsigned int);
Personne(Personne&);
~Personne();
void affichage();
void modifier();
void clonage (Personne &);
Personne& operator=(Personne&);
int operator==(Personne&);
//friend void creer (Personne *tab,int n);
//friend void afficher (Personne *tab);
};
Personne::Personne(){
nom=NULL;
prenom=NULL;
age=0;
}

Personne::Personne(char *a,char *b,unsigned int c){
nom=new char[20];
strcpy(nom,a);
prenom=new char[20];
strcpy(prenom,b);
age=c;
}

Personne::~Personne(){
nom=NULL;
prenom=NULL;
}

void Personne::affichage(){
cout<<"\n------------------";
cout<<"\nLe nom "<<nom<<"\nLe prenom "<<prenom<<"\nL'age "<<age;
cout<<"\n------------------";
}

Personne::Personne(Personne&p){
clonage(p);
}

void Personne::modifier(){
int c;
char *chaine;
int age2;
cout<<"\nQuoi changer\n<1>. nom\n<2>. prenom\n<3>. age\n";
cin>>c;
switch(c){
case 1:cout<<"\nVeuillez entrer la nouvelle chaine...";
cin>>chaine;
strcpy(nom,chaine);
break;
case 2:cout<<"\nVeuillez entrer la nouvelle chaine ...";
cin>>chaine;
strcpy(prenom,chaine);
break;
case 3:cout<<"\nVeuillez entrer la nouvelle valeur ...";
cin>>age2;
age=age2;
break;
}
}

Personne& Personne::operator=(Personne& p){
if(this!=&p){
delete nom;
delete prenom;
nom=new char[20];
prenom=new char[20];
clonage(p);

}
return *this;


}

int Personne::operator==(Personne& p){
if(!strcmp(nom,p.nom) && !strcmp(prenom,p.prenom) && age==p.age) return 1;
return 0;
}

void Personne::clonage(Personne &p){
strcpy(prenom,p.prenom);
strcpy(nom,p.nom);
age=p.age;
}

void creer(Personne *tab,int n){
tab=new Personne[n];
char *chaine1=new char[20];
char *chaine2=new char[20];
int c;
for(int i=0;i<=n;i++)
{cout <<"\nNom :  ";cin>>chaine1;
cout <<"\nPrenom :  ";cin>>chaine2;
cout <<"\nAge :  ";cin>>c;
(*(tab+i))=Personne (chaine1,chaine2,c);

}
//tab[0].affichage();---->sa marche bien
}


void afficher(Personne *tab,int n){
for(int i=0;i<=n;i++){
(*(tab+i)).affichage();
}
}


void main(){
clrscr();

Personne p1("tow" , "tiw" , 20 );
Personne p2("gj,","hic",41);
p1.affichage();
p2.affichage();
p2.modifier();
p2.affichage();
p2=p1;
p2.affichage();
/*********************************************/
int n=2;
Personne *tab;
creer(tab,n);
(*tab).affichage();
//tab[0].affichage();---->sa ne donne rien :s
getch();
afficher(tab,n);
/*********************************************/
getch();
}
</code>

vendredi 26 décembre 2008 à 19:01:37 | Re : un pti prob ... :s help

meksoft002

personne pour m'aider??????
samedi 27 décembre 2008 à 22:14:54 | Re : un pti prob ... :s help

nickydaquick

Membre Club
Réponse acceptée !
salut,

tu veux creer une Personne a partir d'une fonction, OK. Lorsque tu crees un nouveau tableau d'objets Personne tu stocke l'adresse dans une variable tab , seulement cette variable tu la perds et tu perds en meme temps ton espace memoire : Fuite de memoire.

//voici ta fonction reecrite
void creer(Personne **tab,int n)

      *tab=new Personne[n]; 
      char chaine1[20],chaine2[20]; 
      int c; 
      for(int i=0;i<=n;i++) 
      {
         cout <<"\nNom :  ";cin>>chaine1; 
         cout <<"\nPrenom :  ";cin>>chaine2; 
         cout <<"\nAge :  ";cin>>c; 
         (*(*tab)+i)=Personne (chaine1,chaine2,c); 
   }
}

//et dans le main
.
void main()
{
clrscr();

Personne p1("tow" , "tiw" , 20 );
Personne p2("gj,","hic",41);
p1.affichage();
p2.affichage();
p2.modifier();
p2.affichage();
p2=p1;
p2.affichage();
/*********************************************/
int n=2;
Personne *tab;
creer(&tab,n); // <===== ICI
(*tab).affichage();
//tab[0].affichage();---->sa ne donne rien :s
getch();
afficher(tab,n);
/*********************************************/
getch();
//detruire tab
try{delete [] tab;}catch(...){}
}

Bonne continuation
[ Lien ]
je suis heureux de faire partie d'une grande famille ...!
dimanche 28 décembre 2008 à 11:56:31 | Re : un pti prob ... :s help

meksoft002

effectivement......!!  j'ai fait des betises là.!


Cette discussion est classée dans : int, age, void, char, prenom


Répondre à ce message

Sujets en rapport avec ce message

ouvrir un fichier avec devcpp [ par anek971 ] lut tout le monde,Bon j'ai fait un petit programme tout bete juste pour pouvoir ecrire une donné sur une personne ,dans le but d'agrementer ca plustar Help.... probleme avec un programme de tri de char [ par ratp ] Es ce que vous pouvez m'aider. j'ai réaliser un programme qui normalement doit permettre de trier les caracteres. mais sa ne marche pas. merci de m'ai reservation de la memoire [ par khalid_trunks ] salut ts le monde.je debute en c++,j'ai fais une petite simple application( gestion d'appelles)....je sais po grand chose en c++.ben j'ai fais mon pro Erreur conversion from `Sportif*' to non-scalar type `Sportif' requested [ par lordskyser1 ] Bonjour,je débute en C++ et je tente de compiler ma première classe sans y arriver, car je n'arrive pas à comprendre le message d'erreur de dev c++.he quelqun peut il corriger ce qui ne vas pas dans ce programme s'il vous plait [ par gasy72 ] en fait je commence à programmer en C++ maintenant et j'apprend en modifiant et en essayant de comprendre certain programme.voici par exemple un code Elle est ou l'erreur ?? [ par kgadhi ] Bonsoir tous le monde et merci pour votre aide,j'essaye de m'entrainer à la programmation orientée objet en C/C++ mais la j'ai un petit probleme:virtu permuter class avec pointeur this [ par sakjimh ] salut,j'ai creer une classe "personne" (voir si dessous) et une methode qui permute deux personne mais le resultat reste incorrecte malgré que j'ai bi exercice en c [ par noel46 ] bonjour voici mon programme qui demande nom, prenom, sexe et date et doit faire ensuite 140186JOBNATsi une fille né le 14 janvier 1984; JOBE Nataliej' aide en c/c++ gestion classe [ par moussadjijunior ] Bonjour à tous J'oses croire que vous allez tous bien et que vos familles ne manque de rien.Je viens aujourd'hui auprés de vous car j'ai u probleme av chaine de caractere [ par superstarz ] Bonjour, Je suis débutant en C++, et je seche sur un TP concernant les chaines de caractère.Les érreurs qui surviennent lors de la compilation sont le


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales