c++

warren

New Member
Salut,

quelqu'un sait comment on fait un espace en c++ ?

j'ai commencé un petit programme :

- on saisit des informations sur une personne (nom, prénom etc.)
- on affiche les informations

- on peut modifier les informations

mais quand je lance le programme, quand je modifie le nom, ensuite ça ne me le reaffiche pas, et quand je sélectionne quitter ça fait buguer visual studio !

quelqu'un peut m'aider ? ça serait cool, je suis trop nul en c++
 

Asiany

Best Member
Ca serait plus facile si tu nous montrais ton morceau de code :closedeyes:
 

warren

New Member
#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::personne()
{
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 : // le programme bug quand je sélectionne 0 pour quitter !!!!!!!!!!!!
break;
}
}while (choix!=0);
}



char *personne::retour_nom()
{
return this->nom;
}

void personne::modif_nom(char *a) est-ce que cette procédure on peut l'utiliser quand on modifie le nom de la personne ?
{
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();
}


voilà :)
 

warren

New Member
aussi, quand j'affiche des fois la 1ère lettre n'est pas prise :/

ça sert à quoi le cin.ignore(); ?
 

Asiany

Best Member
Je pense que c'est ton cin.ignore() qui est la cause, que ta 1ère lettre n'est pas prise.
Pour le reste, je regarde ça.. j'suis pas un fan du c++ :laugh:, mais pour l'instant j'arrive même pas à compiler ton code. Je te tiens au courant :closedeyes:
 

Asiany

Best Member
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::personne()
{
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();
}
 

Ca peut vous intéresser