Incohérence dans l'affichage d'un nombre par une fonction

cs_bilel59 Messages postés 14 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 avril 2009 - 12 févr. 2009 à 18:34
cs_bilel59 Messages postés 14 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 avril 2009 - 14 févr. 2009 à 10:51
Bonjour à tous, je vous explique mon problème, la fonction afficher me renvoie toujours "Affichage du complexe :0 + i 0" alors que  les 0 devraient être les réels renseignés grâce à la fonction entree, merci davance.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


struct complexe
       {
       float reel;
       float imag;
       };

void entree(complexe c);
void affichage(complexe d);

int main()
{
  complexe ess;
  entree(ess);
  affichage(ess);
  system("PAUSE");   
  return 0;
}

void entree(complexe c)
{printf("entrer la partie reelle\n");
scanf("%f",&c.reel);
printf("entrer la partie imaginaire\n");
scanf("%f",&c.imag);
}

void affichage(complexe d)
{
printf("Affichage du complexe : %f + i %f \n",d.reel,d.imag);
}

4 réponses

The_Snail Messages postés 21 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 6 mars 2009
13 févr. 2009 à 00:01
Salut,

C'est tout à fait normal. Lorsque tu appelles ta fonction "entree", le paramettre est passé par copie donc il n'existe que dans ta fonction "entree" (Lorsque que le programme sort de la fonction c, la variable "complexe c" est détruite).

Pour palier à ce probleme soit tu fais une fonction qui retourne ton complexe, soit tu passe un pointeur sur le complexe à ta fonction.

Ce qui donne comme prototype :
- complexe entree(complexe c);
ou
- void entree(complexe* c)

en espérant ne pas me tromper et être clair :)

++
0
BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
13 févr. 2009 à 09:31
Hello,
Le passage par référence marche aussi bien: entree(complexe & c);
Avantage: ne change pas l'appel à la fonction

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
The_Snail Messages postés 21 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 6 mars 2009
13 févr. 2009 à 16:30
Effectivement :)
0
cs_bilel59 Messages postés 14 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 avril 2009
14 févr. 2009 à 10:51
Merci de vos explications, vous m'avez bien éclairci.
0