Un pti prob...help...:s
chan_hic
Messages postés
18
Statut
Membre
-
chan_hic Messages postés 18 Statut Membre -
chan_hic Messages postés 18 Statut Membre -
Bonjour,
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:
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 <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();
}