Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1651 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  addition affectation...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

addition affectation...

n°395922
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 20:02:59  profilanswer
 


long ad_suiv = 0;
long taille_reserv = 4;
 
 
pointeur_e->ad_dans_zone = ad_suiv ;
 
ad_suiv = (E.ad_dans_zone + taille_reserv) ;
 
fprintf (stderr, "%d, %d, %d\n", ad_suiv, E.ad_dans_zone, taille_reserv);
 
le fprintf me rend
0, 0, 4
 
ou est le probleme dans mon addition?


---------------
Les accents sont en option... j'ai un clavier qwertz.
mood
Publicité
Posté le 15-05-2003 à 20:02:59  profilanswer
 

n°395934
chrisbk
-
Posté le 15-05-2003 à 20:07:47  profilanswer
 

qu'est ce que tu veux qu'on en sache ?
 
on sait pas c koi E.ad_dans_zone , ni ce qu'il y a dedans, donc moi je dis qu'elle marche tres bien ton addition :O


Message édité par chrisbk le 15-05-2003 à 20:08:52
n°395961
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 20:17:44  profilanswer
 

ad_dans_zone c est un champ d une structure E
un long


Message édité par theorie du chaos le 15-05-2003 à 20:18:16

---------------
Les accents sont en option... j'ai un clavier qwertz.
n°395963
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 20:18:51  profilanswer
 

depuis quand 0 = 0 + 4 ?


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°395965
chrisbk
-
Posté le 15-05-2003 à 20:20:12  profilanswer
 

Theorie du chaos a écrit :

depuis quand 0 = 0 + 4 ?


 
oué je viens de reussir a demeler ca de ton code (tain les noms de variable ca rigole pas chez toi :D)
 
c vrai que c chelou [:meganne]

n°395970
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 20:22:26  profilanswer
 

j ai ma soutenance demain...
mes deux binomes sont partis...
y en a un qui viendra pas a l oral...
 
 
et ce prog de merde ne veut rien me modifier :mad:


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°395975
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 20:24:33  profilanswer
 

probleme arrange finalement...
 
tuez moi svp :'(


Message édité par theorie du chaos le 15-05-2003 à 20:24:55

---------------
Les accents sont en option... j'ai un clavier qwertz.
n°395984
chrisbk
-
Posté le 15-05-2003 à 20:30:10  profilanswer
 

Theorie du chaos a écrit :

probleme arrange finalement...
 
tuez moi svp :'(


 
une preference ?

n°395997
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 20:36:53  profilanswer
 

mes champs sont modifies
 
un truc qui fait pas mal :/


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396002
Poireau
Posté le 15-05-2003 à 20:46:07  profilanswer
 

Theorie du chaos a écrit :


long ad_suiv = 0;
long taille_reserv = 4;
 
 
pointeur_e->ad_dans_zone = ad_suiv ;
 
ad_suiv = (E.ad_dans_zone + taille_reserv) ;
 
fprintf (stderr, "%d, %d, %d\n", ad_suiv, E.ad_dans_zone, taille_reserv);
 
le fprintf me rend
0, 0, 4
 
ou est le probleme dans mon addition?


Si c'est %d, il est possible que ca prenne pas le long mais un int. Dans ce cas ca dépend sur combien d'octets est codé le int par rapport au long...
 
Mais je pense que tu as un système 32 bits.


Message édité par Poireau le 15-05-2003 à 20:49:46
mood
Publicité
Posté le 15-05-2003 à 20:46:07  profilanswer
 

n°396018
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 21:04:16  profilanswer
 

merci le probleme est regle...
c etait beaucoup plus bete que ca...
une parenthese fermee trop tot :/
 
par contre la j ai un autre probleme...
je modifie des champs d une structure  
je les affiche avec printf - ils sont bons...
 
je les utilise dans un autre sous programme... ils sont faux :sweat:


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396020
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 21:10:51  profilanswer
 

Code :
  1. static void   CalculAdrEtZones  (Elem *LeProg, int nbLigneLog) {
  2. long ad_suiv   ;
  3. int pres_align = 0 ;
  4. int  i ;
  5. int  cst_align ;
  6. int reste ;
  7. NomZone zone_courante = Z_TEXT;
  8. long taille_reserv ;
  9. ad_suiv = 0 ;
  10. for (i = 0; i< nbLigneLog; i++) {
  11.  Elem   E = LeProg [i] ;
  12.  Elem  *p_e = &E ;
  13.  LigneLog L = LeProg[i].ligne  ;
  14.  switch (L.nat) {
  15.   case LL_NONE  :
  16.    p_e->zone_cour = zone_courante ;
  17.    p_e->ad_dans_zone = ad_suiv ;
  18.    break ;
  19.   case LL_ETIQ  :
  20.    p_e->ad_dans_zone = ad_suiv ;
  21.    p_e->zone_cour = zone_courante ;
  22.    fprintf (stderr, "zone cour etiq %d\n", E.zone_cour) ;
  23.    break ;
  24.   case LL_INST  :
  25.    /* coder ad_dans_zone */
  26.    p_e->zone_cour = zone_courante ;
  27.    p_e->ad_dans_zone = ad_suiv ;
  28.    p_e->nb_bits = Construire_Code (&E, E, LeProg) ;
  29.    ad_suiv = E.ad_dans_zone + E.nb_bits ;
  30.    break ;
  31.   case LL_SECT  :
  32.    /* initialise ad_suiv change la zone courante */
  33.    zone_courante = L.u.sect;
  34.    ad_suiv = 0 ;
  35.    break ;
  36.   case LL_RESERV  :
  37.    /* verification qu on est en zone bss */
  38.    if (!(zone_courante == Z_BSS))
  39.       ErreurContext (SKIP, E) ;
  40.    p_e->zone_cour = zone_courante ;
  41.    /* modifier adresse suivante */
  42.    p_e->ad_dans_zone = ad_suiv ;
  43.    ad_suiv = E.ad_dans_zone + L.u.urni.taille ;
  44.   case LL_GLOBL  :
  45.    p_e->zone_cour = zone_courante ;
  46.    break ;
  47.   case LL_RESERV_INIT :
  48.    /* coder ad_dans_zone */
  49.    if (!(zone_courante == Z_DATA))
  50.       ErreurContext (DATA, E) ;
  51.    p_e->zone_cour = zone_courante ;
  52.    fprintf (stderr, "zone cour data %d\n", E.zone_cour) ;
  53.    p_e->ad_dans_zone = ad_suiv ;
  54.    switch (L.u.urni.dir) {
  55.    case R_ASCII:
  56.     taille_reserv = strlen (L.u.uri.p0.u.chaine) ;
  57.     break ;
  58.    case R_LONG :
  59.     taille_reserv = 4 ;
  60.     break ;
  61.    case R_HALF :
  62.     taille_reserv = 2 ;
  63.     break ;
  64.    case R_BYTE :
  65.     taille_reserv = 1 ;
  66.     break ;
  67.    case R_STRING :
  68.     taille_reserv = strlen (L.u.uri.p0.u.chaine) ;
  69.     break ;
  70.    default: printf ("C est quoi cette reservation?" ) ;
  71.    break ;
  72.    }
  73.    ad_suiv = (E.ad_dans_zone + taille_reserv) ;
  74.    fprintf (stderr, "%d, %d, %d\n", ad_suiv, E.ad_dans_zone, taille_reserv);
  75.    break ;
  76.   case LL_ALIGN  :
  77.    /* modifie toutes les adresses */
  78.    p_e->zone_cour = zone_courante ;
  79.    pres_align = 1 ;
  80.    cst_align = L.u.align ;
  81.    break ;
  82.  }
  83.  if (pres_align) {
  84.   reste =  (ad_suiv % cst_align) ;
  85.    if (reste != 0)
  86.     ad_suiv = ad_suiv + cst_align - reste ;
  87.  }
  88. }
  89. }
  90. La j ai un prog qui modifie mes champs
  91. adr_dans_zone et zone_cour...
  92. et apres...
  93. quand je veux donner les valeurs precedentes a mon pointeur...
  94. 000000000000000000000000000000000000000000000000000000000000000000000000
  95. int pasdanslist(Elem E, int est_global){
  96.   symb *le_pointeur;
  97.   le_pointeur = ma_table;
  98.  
  99.   le_pointeur->line = E.nl_source;
  100.   le_pointeur->adr = E.ad_dans_zone;
  101.   fprintf (stderr, "%d", E.zone_cour) ;
  102.   le_pointeur->type = Correspondance(E.zone_cour) ;
  103.   le_pointeur->next = NULL;
  104.       }
  105. }


Message édité par theorie du chaos le 15-05-2003 à 21:14:29

---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396021
Poireau
Posté le 15-05-2003 à 21:11:03  profilanswer
 

Theorie du chaos a écrit :

merci le probleme est regle...
c etait beaucoup plus bete que ca...
une parenthese fermee trop tot :/
 
par contre la j ai un autre probleme...
je modifie des champs d une structure  
je les affiche avec printf - ils sont bons...
 
je les utilise dans un autre sous programme... ils sont faux :sweat:


Le mieux serait d'afficher du code, et pas des morçeaux de code...
 
Oops :ange: Par contre utilise les balises de highlight syntax C/C++ prévu à cet effet !


Message édité par Poireau le 15-05-2003 à 21:13:06
n°396023
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 21:13:04  profilanswer
 

enfin c aussi que des morceaux :/


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396024
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 21:13:41  profilanswer
 

je voudrais pas que les autres trinomes de mon ecole viennent pomper un code qui ne marche pas :o


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396028
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 21:17:45  profilanswer
 

un break manquant :/
nan finalement c t pas ca...


Message édité par theorie du chaos le 15-05-2003 à 21:26:29

---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396047
theorie du​ chaos
morte et enterrée
Posté le 15-05-2003 à 21:40:00  profilanswer
 

Des que je sors de CalculAdrEtZone
mes champs ad_dans_zone et zone_cour passent a zero...
 
comment faire pour que leur modification soit externe a CalculAdrEtZone ?


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396056
Poireau
Posté le 15-05-2003 à 21:52:18  profilanswer
 

Theorie du chaos a écrit :

Des que je sors de CalculAdrEtZone
mes champs ad_dans_zone et zone_cour passent a zero...
 
comment faire pour que leur modification soit externe a CalculAdrEtZone ?


Tes morçeaux de code ne sont pas très lisibles, et regorge d'effet de bords...
 
Pour ton problème, je dirais au hazard que c'est parce que tu utilise des variables locales à la fonction (c'est à dire qu'ils sont dans la pile d'appel je crois). Ainsi, ces espaces mémoire sont invalides à la sortie de la fonction. Ton seul recours est d'utilisés des paramètres (pour éviter les effets de bord). Ou bien d'utiliser le tas avec une allocation dynamique (malloc).

n°396349
theorie du​ chaos
morte et enterrée
Posté le 16-05-2003 à 08:16:59  profilanswer
 

Code :
  1. /* ---------------------------------------------------------------------
  2. * CalculAdrEtZones
  3. * - Parcours des lignes logiques pour calculer les adresses.
  4. * Stockage dans les champs additionnels de la structure Elem.
  5. * ---------------------------------------------------------------------
  6. */
  7. static  void   CalculAdrEtZones  (Elem *LeProg, int nbLigneLog) {
  8. long ad_suiv   ;
  9. int pres_align = 0 ;
  10. int  i ;
  11. int  cst_align ;
  12. int reste ;
  13. NomZone zone_courante = Z_TEXT;
  14. Elem   E;
  15. Elem  *p_e;
  16. LigneLog L;
  17. ad_suiv = 0 ;
  18. for (i = 0; i< nbLigneLog; i++) {
  19.  E = LeProg [i] ;
  20.  p_e = &E ;
  21.  L = LeProg[i].ligne  ;
  22.  switch (L.nat) {
  23.   case LL_NONE  :
  24.    p_e->zone_cour = zone_courante ;
  25.    p_e->ad_dans_zone = ad_suiv ;
  26.    p_e->nb_bits = 0 ;
  27.    break ;
  28.   case LL_ETIQ  :
  29.    p_e->ad_dans_zone = ad_suiv ;
  30.    p_e->zone_cour = zone_courante ;
  31.    p_e->nb_bits = 0 ;
  32.    fprintf (stderr, "zone cour etiq %d\n", p_e->zone_cour) ;
  33.    break ;
  34.   case LL_INST  :
  35.    /* coder ad_dans_zone */
  36.    p_e->zone_cour = zone_courante ;
  37.    p_e->ad_dans_zone = ad_suiv ;
  38.    p_e->nb_bits = Construire_Code (&E, E, LeProg) ;
  39.    ad_suiv = E.ad_dans_zone + E.nb_bits ;
  40.    break ;
  41.   case LL_SECT  :
  42.    /* initialise ad_suiv change la zone courante */
  43.    zone_courante = L.u.sect;
  44.    p_e->ad_dans_zone = ad_suiv ;
  45.    ad_suiv = 0 ;
  46.    break ;
  47.   case LL_RESERV  :
  48.    /* verification qu on est en zone bss */
  49.    if (!(zone_courante == Z_BSS))
  50.       ErreurContext (SKIP, E) ;
  51.    p_e->nb_bits = L.u.urni.taille ;
  52.    p_e->zone_cour = zone_courante ;
  53.    /* modifier adresse suivante */
  54.    p_e->ad_dans_zone = ad_suiv ;
  55.    ad_suiv = E.ad_dans_zone + E.nb_bits ;
  56.    break ;
  57.   case LL_GLOBL  :
  58.    p_e->zone_cour = zone_courante ;
  59.    p_e->nb_bits = 0;
  60.    p_e->ad_dans_zone = ad_suiv ;
  61.    break ;
  62.   case LL_RESERV_INIT :
  63.    /* coder ad_dans_zone */
  64.    if (!(zone_courante == Z_DATA))
  65.       ErreurContext (DATA, E) ;
  66.    p_e->zone_cour = zone_courante ;
  67.    fprintf (stderr, "zone cour data %d\n", E.zone_cour) ;
  68.    p_e->ad_dans_zone = ad_suiv ;
  69.    switch (L.u.urni.dir) {
  70.    case R_ASCII:
  71.     p_e->nb_bits = strlen (L.u.uri.p0.u.chaine) ;
  72.     break ;
  73.    case R_LONG :
  74.     p_e->nb_bits = 4 ;
  75.     break ;
  76.    case R_HALF :
  77.     p_e->nb_bits = 2 ;
  78.     break ;
  79.    case R_BYTE :
  80.     p_e->nb_bits = 1 ;
  81.     break ;
  82.    case R_STRING :
  83.     p_e->nb_bits = strlen (L.u.uri.p0.u.chaine) ;
  84.     break ;
  85.    default: printf ("C est quoi cette reservation?" ) ;
  86.    break ;
  87.    }
  88.    ad_suiv = (E.ad_dans_zone + E.nb_bits) ;
  89.    fprintf (stderr, "%d, %d, %d\n", ad_suiv, E.ad_dans_zone, E.nb_bits);
  90.    break ;
  91.   case LL_ALIGN  :
  92.    /* modifie toutes les adresses */
  93.    p_e->zone_cour = zone_courante ;
  94.    pres_align = 1 ;
  95.    cst_align = L.u.align ;
  96.    break ;
  97.  }
  98.  if (pres_align) {
  99.   reste =  (ad_suiv % cst_align) ;
  100.    if (reste != 0)
  101.     ad_suiv = ad_suiv + cst_align - reste ;
  102.  }
  103. }
  104. }
  105. et si je declare comme ca, ca change quelque chose?


Message édité par theorie du chaos le 16-05-2003 à 08:17:43

---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396356
theorie du​ chaos
morte et enterrée
Posté le 16-05-2003 à 08:42:50  profilanswer
 

void Remplir_Champs (Elem *p_e, int ad_suiv, NomZone zone_courante, int nombre) {
 
 p_e->zone_cour = zone_courante ;
 p_e->ad_dans_zone = ad_suiv ;
 p_e->nb_bits = nombre ;
}
 
 
j ai fait un truc a part en prenant le pointeur en parametre
et ca marche tjrs pas...


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396358
theorie du​ chaos
morte et enterrée
Posté le 16-05-2003 à 08:43:39  profilanswer
 

c est quoi la syntaxe pour faire des malloc  la dedans
ce que je voulais faire a ete refuse...


---------------
Les accents sont en option... j'ai un clavier qwertz.
n°396938
theorie du​ chaos
morte et enterrée
Posté le 16-05-2003 à 15:12:59  profilanswer
 

bon...
 
adieu :D :hello:


---------------
Les accents sont en option... j'ai un clavier qwertz.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  addition affectation...

 

Sujets relatifs
Affectation d'un tableau de AnsiString dans un autreaffectation de variable PHP -> vers var JS
probleme d'addition(noob);Affectation variable globale
[GAWK] Affectation d'une variable dynamiqueAffectation d'un HPALETTE à un TBitmap
[Javascrip & PHP] Affectation de variable[C++] Affectation par dtor+ctor de copie ?
[PHP&JS] Affectation de variables ?[XSL] Affectation de variable
Plus de sujets relatifs à : addition affectation...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR