Accueil > Forum > > > > un pti prob ... :s help
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
|
samedi 27 décembre 2008 à 22:14:54 |
Re : un pti prob ... :s help

nickydaquick
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|