Affectation de structures

Affectation de structures - C - Programmation

Marsh Posté le 15-05-2007 à 16:52:49    

[:augie]
 tout le monde !

 


alors voilà j'ai un problème avec les structures

 

je crée deux structures

 

struct Population
{
 int numero;
 int N;
 int nbs;
 int nbi;
 int nbr;
};

 

struct Individu
{
 struct Population pop;
 int status;
 double tps_infecte;
 double tps_infection;
 double tps_sortie;
 int numero;
};

 

et ensuite dans le programma principal,  j'affecte le champ pop de l'individu avec une population préalablement créee

 

sauf que quand je lui demande d'afficher les champs de la population créee en passant par l'individu ca affiche n'importe quoi [:zytrasnif]

 

je mets le code

 

la population créee s'appelle popu et l'individu s'appelle indi

 

indi.pop = popu;

 

printf(" indi.pop %d %d\n", ((indi).pop).numero,((indi).pop).nbs);

 

les valeurs affichées ne correspondent pas à celles que j'ai mises a la population [:zytrasnif]

 

je croyais qu'en c, les affectations entre structures ca marchait

 

merci d'avance


Message édité par Profil supprimé le 15-05-2007 à 17:07:07
Reply

Marsh Posté le 15-05-2007 à 16:52:49   

Reply

Marsh Posté le 15-05-2007 à 17:03:21    

Ecris mieux, là c'est incompréhensible.

 

Et poste plus de code (entre balises cpp, pitié pour nos yeux), là je ne crois pas que tu aies isolé l'erreur. [:klem3i1]

 

edit : et enlève ces parenthèses, "indi.pop.numero" fonctionne très bien [:dawao]


Message édité par Elmoricq le 15-05-2007 à 17:05:00
Reply

Marsh Posté le 15-05-2007 à 17:06:20    

okidoki je poste tout le code

Code :
  1. struct Population
  2. {
  3. int numero;
  4. int N;
  5. int nbs;
  6. int nbi;
  7. int nbr;
  8. };
  9. struct Individu
  10. {
  11. struct Population pop;
  12. int status;
  13. double tps_infecte;
  14. double tps_infection;
  15. double tps_sortie;
  16. int numero;
  17. };
  18. int main()
  19. {
  20. struct Echeancier * e,*e2,*e3;
  21. struct Population  popu;
  22. struct Individu * indi;
  23. int  taille=0;
  24. int i;
  25. double t;
  26. e = malloc(sizeof(struct Echeancier));
  27. indi = malloc(20*sizeof(struct Individu));
  28. popu.N = 20;
  29. popu.nbi = 1;
  30. popu.nbs = 19;
  31. popu.nbr = 0;
  32. popu.numero = 0;
  33. for(i=0;i<20;i++)
  34. {
  35. indi[i].status = 0;
  36. indi[i].tps_infecte = 1.0;
  37. indi[i].tps_sortie = 2.0;
  38. indi[i].tps_infection = 3.0;
  39. indi[i].pop = popu;
  40. }
  41. printf(" indi.pop %d %d\n", ((indi[i]).pop).numero,((indi[i]).pop).nbs);
  42. return 0;
  43. }
 

wala et les valeurs affichées ne correspondent pas du tout [:zytrasnif]


Message édité par Profil supprimé le 15-05-2007 à 17:09:33
Reply

Marsh Posté le 15-05-2007 à 17:07:07    

balises code cpp on te dit :o

Message cité 1 fois
Message édité par _darkalt3_ le 15-05-2007 à 17:07:16

---------------
Töp of the plöp
Reply

Marsh Posté le 15-05-2007 à 17:07:24    

BALISES BOURDEL §§§  [:330tdx2]  
 

Code :
  1. struct Population
  2. {
  3. int numero;
  4. int N;
  5. int nbs;
  6. int nbi;
  7. int nbr;
  8. };
  9. struct Individu
  10. {
  11. struct Population pop;
  12. int status;
  13. double tps_infecte;
  14. double tps_infection;
  15. double tps_sortie;
  16. int numero;
  17. };
  18. int main()
  19. {
  20. struct Echeancier * e,*e2,*e3;
  21. struct Population  popu;
  22. struct Individu * indi;
  23. int  taille=0;
  24. int i;
  25. double t;
  26. e = malloc(sizeof(struct Echeancier));
  27. indi = malloc(20*sizeof(struct Individu));
  28. popu.N = 20;
  29. popu.nbi = 1;
  30. popu.nbs = 19;
  31. popu.nbr = 0;
  32. popu.numero = 0;
  33. for(i=0;i<20;i++)
  34. {
  35. indi[i].status = 0;
  36. indi[i].tps_infecte = 1.0;
  37. indi[i].tps_sortie = 2.0;
  38. indi[i].tps_infection = 3.0;
  39. indi[i].pop = popu;
  40. }
  41. printf(" indi.pop %d %d\n", ((indi[i]).pop).numero,((indi[i]).pop).nbs);
  42. return 0;
  43. }

Reply

Marsh Posté le 15-05-2007 à 17:07:41    

_darkalt3_ a écrit :

balises code cpp on te dit :o

 


pardon [:cupra]


Message édité par Profil supprimé le 15-05-2007 à 17:08:02
Reply

Marsh Posté le 15-05-2007 à 17:11:01    

Bon déjà, tu testes pas le retour de tes malloc(). C'est mal.
 
 
En plus, t'as pas l'impression que "i" vaut 20, à l'endroit où tu fais le printf ? [:opus dei]

Reply

Marsh Posté le 15-05-2007 à 17:11:44    

le debugger est ton ami :o


---------------
Töp of the plöp
Reply

Marsh Posté le 15-05-2007 à 17:12:04    

C'est vrai que c'est une meilleure réponse que la mienne. [:romf]
(rapport au pécheur poisson toussa)

Message cité 1 fois
Message édité par Elmoricq le 15-05-2007 à 17:12:22
Reply

Marsh Posté le 15-05-2007 à 17:12:05    

Elmoricq a écrit :

Bon déjà, tu testes pas le retour de tes malloc(). C'est mal.

 


En plus, t'as pas l'impression que "i" vaut 20, à l'endroit où tu fais le printf ? [:opus dei]

  

[:azka]

 

effectivement c'était con [:petrus75]

 

merci ;)


Message édité par Profil supprimé le 15-05-2007 à 17:12:21
Reply

Marsh Posté le 15-05-2007 à 17:12:05   

Reply

Marsh Posté le 15-05-2007 à 17:24:53    

Elmoricq a écrit :

C'est vrai que c'est une meilleure réponse que la mienne. [:romf]
(rapport au pécheur poisson toussa)


[:romf]


---------------
Töp of the plöp
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed