begin process at 2012 05 28 22:37:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Conservation des données créees dans une classe


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

Conservation des données créees dans une classe

lundi 2 mars 2009 à 15:09:27 | Conservation des données créees dans une classe

leyeye21

Bonjour,
J'ai un soucis dans mon programme,
Lorsque je vais dans la fonction "creation_contrat()" j'arrive à créer un nouveau contrat et le lire mais lorsque je vais dans ma fonction "affiche_details()" impossible d'accèder au contrat créé!
Les fonctions sont tout à la fin du programme.
Je suppose que c'est soucis sur le push_back mais rien de moins suis car je suis tout sauf un as du C++

Voici mon code et merci d'avance pour votre aide.
Oliv.

///////////////////////////////////////////////////////////////////////////////////////////

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<vector>

using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////
// classe contrat
///////////////////////////////////////////////////////////////////////////////////////////

class contrat
{
private:
    int numero;
    int moisCreation;
    int anneeCreation;
    int montantAnnuelBase;

protected:
    int moisFinContrat;
    int anneeFinContrat;

public:

    contrat(int, int, int, int, int, int);
    //contrat(int, int, int, int);
    contrat();

    ~contrat();

    virtual void affiche();

    modificationFinContrat(int, int);
    int getnumero();

};

int contrat::getnumero()
{return numero;
}

contrat::contrat(int n, int mc, int ac, int mfc, int afc, int mab)  //constructeur
{
    numero = n;
    moisCreation = mc;
    anneeCreation = ac;
    moisFinContrat = mfc;
    anneeFinContrat = afc;
    montantAnnuelBase = mab;
}
contrat::contrat()  //constructeur par defaut
{
    numero = 0;
    moisCreation = 0;
    anneeCreation = 0;
    moisFinContrat = 0;
    anneeFinContrat = 0;
    montantAnnuelBase = 0;
}

contrat::~contrat() //destructeur
{
}

void contrat::affiche() //affichage contrat
{
    cout<<"numero de contrat: "<<numero<<endl;
    cout<<"date de creation du contrat: "<<moisCreation<<"/"<<anneeCreation<<endl;
    cout<<"date de fin du contrat: "<<moisFinContrat<<"/"<<anneeFinContrat<<endl;
    cout<<"montant de la cotisation annuelle de base: "<<montantAnnuelBase<<endl;
}

contrat::modificationFinContrat(int mfc, int afc) //modif date fin contrat
{
    moisFinContrat=mfc;
    anneeFinContrat=afc;
}



///////////////////////////////////////////////////////////////////////////////////////////
//classe contrat habitation
///////////////////////////////////////////////////////////////////////////////////////////

class cHabit:public contrat
{
private:
   
protected:
    int montantPatrimoine;
    char categorieCouverture;

public:
    cHabit(int, char , int, int, int, int, int, int);
    ~cHabit();
    conditionSinistre(int);
    void affiche();
};


cHabit::cHabit(int mp=0, char cc='A', int n=0, int mc=0, int ac=0, int mfc=0, int afc=0, int mab=0) : contrat( n, mc, ac, mfc, afc, mab)
{
    montantPatrimoine = mp;
    categorieCouverture = cc;
   
}

cHabit::~cHabit()
{
}

cHabit::conditionSinistre(int condition)
{   
    float remboursement;

    if(condition ==1)
    {
        switch(categorieCouverture)
        {
            case 'N': remboursement = 0.65*montantPatrimoine - 250;
            break;
            case 'S': remboursement = 0.75*montantPatrimoine - 200;
            break;
            case 'E': remboursement = 0.9*montantPatrimoine - 150;
            break;
            default: cout<<"mauvise saisie"<<endl;
        }
    }
    else
    {
        switch(categorieCouverture)
        {
            case 'N': remboursement = 0.45*montantPatrimoine - 250;
            break;
            case 'S': remboursement = 0.65*montantPatrimoine - 200;
            break;
            case 'E': remboursement = 0.75*montantPatrimoine - 150;
            break;
            default: cout<<"mauvaise saisie"<<endl;
        }
    }

    cout<<"Remboursement sinistre: "<<remboursement<<" Euros"<<endl;

}

void cHabit:: affiche()
{
    contrat::affiche();
    cout<<"montant du patrimoine: "<<montantPatrimoine<<endl;
    cout<<"categorie de couverture: "<<categorieCouverture<<endl;
}

///////////////////////////////////////////////////////////////////////////////////////////
//classe contrat voiture
///////////////////////////////////////////////////////////////////////////////////////////

class cVoiture:public contrat
{
private:
    char numeroImmatriculation[8];
    int mMiseCirculation;
    int aMiseCirculation;
    int numeroSerie;
    float bonusMalus;

public:
    cVoiture(char *, int, int, int, float, int, int,int, int, int, int);
    ~cVoiture();
    void affiche();
};


cVoiture::cVoiture(char *ni=NULL, int mmc=0, int amc=0, int ns=0, float bm=0, int n=0, int mc=0, int ac=0,int mfc=0,int afc=0, int mab=0) : contrat( n, mc, ac, mfc, afc, mab)
{
    mMiseCirculation = mmc;
    aMiseCirculation = amc;
    strcpy(numeroImmatriculation, ni);
    numeroSerie = ns;
    bonusMalus = bm;   
}

cVoiture::~cVoiture()
{
}

void cVoiture::affiche()
{
    contrat::affiche();
    cout<<"Date premiere mise en ciculation: "<<mMiseCirculation<<"/"<<aMiseCirculation<<endl;
    cout<<"Numero Immatriculation: "<<numeroImmatriculation<<endl;
    cout<<"Bonus/Malus: "<<bonusMalus<<endl;
}


///////////////////////////////////////////////////////////////////////////////////////////
// Class client
///////////////////////////////////////////////////////////////////////////////////////////

class client
{
private:
    char nom[10];
    char prenom[10];

protected:
    contrat *t[10];
    int nbC;

public:
    client(char *, char *);
    ~client();
    void affiche();
    void ajouterContrat(contrat *newContrat);
};
   

client::client(char *n, char *p)
    {
        strcpy(nom, n);
        strcpy(prenom, p);
        nbC = 0;
   
    }

client::~client()
    {
    }

void client::affiche()
    {
        int i=0;
        cout<<"prenom: "<<prenom<<" nom: "<<nom<<endl;
        cout<<nbC<<" contrats"<<endl;
        for(i=0; i<=nbC-1; i++)
        {
            t[i]->affiche();
        }
        system("pause");
    }
           
void client::ajouterContrat(contrat *newContrat)
    {
        t[nbC]=new contrat;
        t[nbC]=newContrat;
        nbC++;       
    }

///////////////////////////////////////////////////////////////////////////////////////////

void creation_contrat();
void affiche_details();



///////////////////////////////////////////////////////////////////////////////////////////
// Programme principal
///////////////////////////////////////////////////////////////////////////////////////////

vector<contrat *> tabContrat;
int NumContrats = 0;

int main()
{   
    int choix_menu;
   

        for(;;)            //boucle permanente du programme
        {
          
          
            cout<<"quelles fonction souhaitez vous mettre en oeuvre?\n"; //menu de choix de la fonction
            cout<<"1: Afficher les caractéristiques d'un contrat d'après sont nouveau numéro\n";
            /*cout<<"2: Conditions de l'assurance d'après le numéro de contrat\n";
            cout<<"3: Balayer l'ensemble des contrats\n";
            cout<<"4: Modification de la date de fin de contrat\n";*/
            cout<<"5: Creer un contrat\n";
            /*cout<<"6: Creer un client\n";*/
            cout<<"0: Quitter le programme\n";
            cin>>choix_menu;
          
            switch(choix_menu)
            {
               case 1: affiche_details();
               break;
               /*case 2: affiche_condition_assurance();
               break;
               case 3: balayage_contrats();
               break;
               case 4: modification_contrat();
               break;*/
               case 5: creation_contrat();
               break;
               /*case 6: creation_client();
               break;*/
               case 0: return 0;
               default:
               printf("vous n'avez pas selectionner un menu qui existe ");
            }
    }

}

///////////////////////////////////////////////////////////////////////////////////////////
//fonctions
///////////////////////////////////////////////////////////////////////////////////////////

void creation_contrat()
{

int Annee_Mise_Circulation,numero_Serie, Mois_Mise_Circulation, choix_type_contrat,montant_Patrimoine,Mois_Creation,Annees_Creation,montant_Annuel_Base,Mois_fin,Annee_fin;    char categorie_Couverture,numero_Immatriculation[8];
float bonus_Malus;
int nc;
int j=0;
int test =0;
cout<<"quel type de contrat souhaitez vous créer?\n 1: Habitation\n 2: Véhicule\n";
cin>>choix_type_contrat;
cout<<"Mois de creation du contrat (mm)?\n";
cin>>Mois_Creation;
cout<<"Annee de creation du contrat (aaaa)?\n";
cin>>Annees_Creation;
cout<<"Montant annuel choisi (en Euros)?\n";
cin>>montant_Annuel_Base;
cout<<"Mois de fin de contrat (mm)?\n";
cin>>Mois_fin;
cout<<"Annee de fin de contrat (aaaa)?\n";
cin>>Annee_fin;
if (choix_type_contrat == 1)
    {
        cout<<"montant du Patrimoine?\n";
        cin>>montant_Patrimoine;
        cout<<"Categorie Couverture (N, S E)?\n";
        cin>>categorie_Couverture;
        cHabit C(montant_Patrimoine, categorie_Couverture, NumContrats, Mois_Creation, Annees_Creation, Mois_fin, Annee_fin, montant_Annuel_Base);
        tabContrat.push_back(&C);
        NumContrats++;
        cout<<"nc"<<endl;
        cin>>nc;
        for (j=0;j<NumContrats; j++)
        {
            test = tabContrat[j]->getnumero();
            cout<<test<<endl;
            if (test == nc) tabContrat[j]->affiche();
        }
    }
    else if (choix_type_contrat == 2)
    {   
        cout<<"immatriculation du véhicule?\n";
        cin>>numero_Immatriculation[8];
        cout<<"Mois de mise en circulation?\n";
        cin>>Mois_Mise_Circulation;
        cout<<"Annee de mise en circulation?\n";
        cin>>Annee_Mise_Circulation;
        cout<<"numero de serie?\n";
        cin>>numero_Serie;
        cout<<"bonus ou malus?\n";
        cin>>bonus_Malus;
        cVoiture C(numero_Immatriculation,Mois_Mise_Circulation,Annee_Mise_Circulation, numero_Serie, bonus_Malus, NumContrats, Mois_Creation, Annees_Creation, Mois_fin, Annee_fin, montant_Annuel_Base);
        tabContrat.push_back(&C);
        NumContrats++;
        cout<<"nc"<<endl;
        cin>>nc;
        for (j=0;j<NumContrats; j++)
        {
            test = tabContrat[j]->getnumero();
            cout<<test<<endl;
            if (test == nc) tabContrat[j]->affiche();
        }   
    }
return;
}

///////////////////////////////////////////////////////////////////////////////////////////
void affiche_details()   //fonction d'affichage d'apres le numero de contrat
{
    /*int j =0, test=0;
    int numero_contrat;
    cout<<NumContrats;
    cout<<"saisir un numéro de contrat\n";
    cin>>numero_contrat;
    cout<<numero_contrat;
    for (j=0;j<NumContrats; j++)
    {
        test = tabContrat[j]->getnumero();
        cout<<test<<endl;
        if (test == numero_contrat) tabContrat[j]->affiche();
    }*/

tabContrat[0]->affiche();
return;
}


Cette discussion est classée dans : affiche, int, numero, cout, contrat


Répondre à ce message

Sujets en rapport avec ce message

pb avec procedure [ par bidules ] bonjour,voila mon code(simplifier) :void affiche(int numero){cout }void main(){affiche(10);}et un message d'erreur apparait lors de la compilation Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c implicit declaration of function `int getchar(...)' [ par cognac ] À chaque fois que j'utilise getch(); j'obtien le message suivant:getch();Voici mon programme (en fait mon exercice):#include //bibliotheque d'entree Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l Reference pour arguments de fonction! [ par CoxJoe ] Hello,Voila mon code qui est tres simple :# include # include using namespace std;// fonction pour entrer des lettresvoid getchar(char& name[]){ cout une fiche de renseignement [ par cabarrus ] je cherche à faire un programme qui demande des renseignements pour pouvoir ensuite les affiché comme une fiche d'identité!!!voici monprogramme mais m simplifier une fraction ( débutant ) !!! [ par myogtha ] #include int main (){int denominateur,mulfac1,mulfac2,facmul1,facmul2,facmulfinal;int a,b,c,d;coutcin>>a;coutcin>&gt Pobleme de debutant bas niveau [ par zzzzzz ] #include ?iostream.h? /* pour cout cin */int a;int factorielle(int n) { if(n==0) { return 1; } else { return n*factorielle(n-1); }}void main() que des boucles. [ par pratix ] Salut à tous.Je post mon prg cherchenbr modifié (voir sujet précédent ''int main" ).Programme compilé avec visual C++ 06. ( zéro erreur )j'ai essay


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,406 sec (4)

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