IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[C++] Mon paramètre change de valeur


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut [C++] Mon paramètre change de valeur
    Bonjour,

    Je suis en train d'écrire cette fonction .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void afficheRefClients(CLIENT *tabClients, int nbClients)
    Elle prend en paramètre un CLIENT dont la définition est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct CpteCLIENT
    { 
      char name[MAX_IDENT_NAME];
      CPTEBQUE *cpteCourant;
      CPTEBQUE *cpteSuisse;
    } CLIENT ;
    tabClients est rempli de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    CLIENT* createTabClients(FILE *file)
    {
    	CLIENT clientCourant; 
    	CPTEBQUE compteCourant; 
    	CPTEBQUE compteSuisse; 
     
    	// Nombre de clients
    	int nbClients = getNumberClient(file); 
     
    	CLIENT *tabClients; 
    	tabClients = (CLIENT*)malloc(nbClients*sizeof(CLIENT)); 
     
    	// Initialisation
    	for(int i = 0; i < nbClients; ++i) 
    	{
    		strcpy(clientCourant.name ,getClientName(file)); 
    		compteCourant.ident = getCpteCourantId(file); 
    		compteCourant.credit = (double)getCredit(file); 
    		compteCourant.debit = (double)getDebit(file);
     
    		if(getCpteCourantId(file) != 0)
    		{
    			compteSuisse.ident = getCpteSuisseId(file); 
    			compteSuisse.credit = (double)getCredit(file); 
    			compteSuisse.debit = (double)getDebit(file); 
     
    			clientCourant.cpteSuisse = &compteSuisse; 
    		}
     
    		clientCourant.cpteCourant = &compteCourant; 
    		tabClients[i] = clientCourant; 
    		// printf("%s\t %f\n", tabClients[i].name, (*tabClients[i].cpteCourant).credit); 
    	}
     
    	return (tabClients); 
    }
    En lançant la première fonction, tabClients semble bien contenir la liste des CLIENT avec les caractéristiques.

    Une fois le curseur entré dans la fonction, le premier client de tabClients possède des montants (crédit et débit) qui ressemblent à -9.23589...

    Où se trouve l'erreur ?

    Merci beaucoup

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Salut,

    déjà je penses que tu est dans la mauvaise section,
    ton code resssemble en rien à du C++, c'est plutôt du C ... (fonction / méthodes, malloc / new, structure / class, printf / std::cout ...)

    Pour ton problème, c'est typiquement que ta structure ne doit pas être initialisée.

    J'ai pas test mais je pense que l'erreur et que tu met dans des variables que tu retournes des adresses de variables locales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    CPTEBQUE compteCourant; // variable locale
     
    clientCourant.cpteCourant = &compteCourant;
    Cordialement,
    Neokript

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 636
    Par défaut
    Salut,
    Citation Envoyé par NeoKript Voir le message
    ton code resssemble en rien à du C++, c'est plutôt du C ... (fonction / méthodes, malloc / new, structure / class, printf / std::cout ...)
    Je confirme...

    Soit tu souhaite travailler en C, et, dans ce cas, je te propose de nous le dire, pour que nous puissions déplacer la discussion dans la section ad-hoc, soit tu souhaites travailler en C++, et, dans ce cas, je te conseillerais d'utiliser toutes les possibilités offertes par C++.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. FloatToStr () : change la valeur de mon float aprés conversion
    Par devlopassion dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/08/2008, 15h56
  2. booléan qui change de valeur debug/release
    Par crealinks dans le forum MFC
    Réponses: 3
    Dernier message: 18/08/2006, 17h09
  3. Paramètre liste de valeur
    Par dwinkel dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/12/2005, 08h39
  4. [CR8.5] Init paramètre plage de valeurs
    Par juelo dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 08/04/2005, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo