Précédent Remonter Suivant

6.3  Union

Une union est comparable à une structure si ce n'est que plusieurs variables sont stockées au même endroit en mémoire : cette zone peut donc être interprétée de plusieurs façons différentes.




Exercice 6.2 --- Une arithmétique mixte.


En utilisant votre implantation des rationnels et des complexes, définissez un type Nombre qui pourra être soit un entier, soit un Rationnel, soit un flottant, soit un Complexe.
Indications :
vous pouvez vous baser sur le type Nombre suivant :
  enum TypeNombre {entier, flottant, rationnel, complexe} ;
  typedef struct Nombre {
     enum TypeNombre tn ;
     union valeur {
       int nbentier ;
       Rationnel nbrationnel  ;
       float nbflottant ;
       Complexe nbcomplexe ;
     } valeur;
  } Nombre ;

  typedef struct CoupleNombre {
       Nombre a ;
       Nombre b ;
  } CoupleNombre ;
Comme précédent pour implanter notre arithmétique, il nous faut coder : Pour fixer les idées, on cherche à élaborer des fonctions permettant les manipulations décrites dans la fonction principale suivante :
int main(void){

  Nombre var1, var2, var3 ;

  var1.tn = rationnel ;
  var1.valeur.nbrationnel.numerateur = 1 ;
  var1.valeur.nbrationnel.denominateur = 4 ;

  var2.tn = entier ;
  var2.valeur.nbentier= 4 ;

  var3.tn = complexe ;
  var3.valeur.nbcomplexe.partie_reelle = 2.54 ;
  var3.valeur.nbcomplexe.partie_imaginaire = 4.45 ;

  PrintNombre(var1) ;
  printf(" et ");
  PrintNombre(var2) ;
  printf(" et ");
  PrintNombre(var3) ;
  printf(".\n");


  PrintNombre(QuoNombre(MulNombre(var1,var2),var3)) ;
  printf(".\n");

  return 1 ;
}
Remarque :
ce genre de problème est plus facilement gérable dans un langage orienté objet.








Pour tout commentaire : Alexandre Sedoglavic.
Précédent Remonter Suivant