Bon, chez moi ça marche ! :biggrin: , je n'ai rencontré aucune erreur à part le 0 pour quitter. Tout est réaffiché, et aucune lettre est oublié.
#include<iostream.h> // j'ai vu qu'on est plus obligé de mettre le .h c'est vrai ?
#include<string.h>
#include<stdlib.h>
typedef char chaine[30];
class personne
{
protected :
chaine nom, prenom, adresse, ville;
char civilite[15];
int codepostal;
public :
personne();
void saisir();
void afficher();
void modifier();
char *retour_nom();
void modif_nom(char *);
char *retour_prenom();
void modif_prenom(char *);
char *retour_ville();
};
personne:
ersonne()
{
strset(this->nom,'\0');
strset(this->prenom,'\0');
strset(this->adresse,'\0');
strset(this->ville,'\0');
strset(this->civilite,'\0');
this->codepostal=0;
}
void personne::saisir()
{
cout<<"Saisir le nom:";
cin.getline(this->nom,30,'\n');
cout<<"Saisir le prenom:";
cin.getline(this->prenom,30,'\n');
cout<<"Saisir l'adresse:";
cin.getline(this->adresse,30,'\n');
cout<<"Saisir la ville:";
cin.getline(this->ville,30,'\n');
cout<<"Saisir la civilite:";
cin.getline(this->civilite,15,'\n');
cout<<"Saisir le code postal:";
cin>>this->codepostal;
}
void personne::afficher()
{
cout<<"\n Le nom est:"<<this->nom;
cout<<"\n Le prenom est:"<<this->prenom;
cout<<"\n L'adresse est:"<<this->adresse;
cout<<"\n La ville est:"<<this->ville;
cout<<"\n La civilite est:"<<this->civilite;
cout<<"\n Le code postal est:"<<this->codepostal;
}
void personne::modifier()
{
int choix;
do
{
cout<<"\n\n -- MENU DE MODIFICATION --";
cout<<"\n 1- Modifier le nom";
cout<<"\n 2- Modifier le prenom";
cout<<"\n 3- Modifier l'adresse";
cout<<"\n 4- Modifier la ville";
cout<<"\n 5- Modifier la civilite";
cout<<"\n 6- Modifier le code postal";
cout<<"\n 0- Quitter";
cout<<"\n\n Votre choix:";
cin>>choix;
switch(choix)
{
case 1:
cout<<"\n Saisir le nouveau nom:";
cin.ignore();
cin.getline(this->nom,30,'\n');
this->personne::afficher();
break;
case 2:
cout<<"\n Saisir le nouveau prenom:";
cin.ignore();
cin.getline(this->prenom,30,'\n');
this->personne::afficher();
break;
case 3:
cout<<"\n Saisir la nouvelle adresse:";
cin.ignore();
cin.getline(this->adresse,30,'\n');
this->personne::afficher();
break;
case 4:
cout<<"\n Saisir la nouvelle ville:";
cin.ignore();
cin.getline(this->ville,30,'\n');
this->personne::afficher();
break;
case 5:
cout<<"\n Saisir la nouvelle civilite:";
cin.ignore();
cin.getline(this->civilite,15,'\n');
this->personne::afficher();
break;
case 6:
cout<<"\n Saisir le nouveau code postal:";
cin>>this->codepostal;
this->personne::afficher();
break;
case 0 :
exit(0);
break;
}
}while (choix!=0);
}
char *personne::retour_nom()
{
return this->nom;
}
void personne::modif_nom(char *a)
{
strcpy(this->nom,a);
}
char *personne::retour_prenom()
{
return this->prenom;
}
void personne::modif_prenom(char *a)
{
strcpy(this->prenom,a);
}
void main()
{
personne P;
P.saisir();
P.afficher();
P.modifier();
}