Exercice 49
Énoncé
Soit le type structure suivant, représentant un point d’un plan :
struct point { char c ; // nom attribué au point
int x, y ; // ses coordonnées
}
Écrire une fonction qui reçoit en argument l’adresse d’une structure du type point et
qui renvoie en résultat une structure de même type correspondant à un point de même
nom et de coordonnées opposées.
Écrire un petit programme d’essai.
Voici ce que pourrait être notre fonction (nous avons reproduit la déclaration de point,
laquelle pourrait éventuellement figurer dans un fichier en-tête séparé qu’on
incorporerait par une directive #include) :
#include
using namespace std ;
struct point
{ char c ;
int x, y ;
} ;
point sym (point * adp)
{ point res ;
res.c = adp->c ;
res.x = - adp->x ;
res.y = - adp->y ;
return res ;
}
Notez la « dissymétrie » d’instructions telles que res.c = adp->c ; on y fait appel à
l’opérateur « . » à gauche et à l’opérateur « -> » à droite (on pourrait cependant écrire
res.c = (*adp).c).
Voici un exemple d’essai de notre fonction (ici, nous avons utilisé les possibilités
d’initialisation d’une structure pour donner des valeurs à p1) :
main()
{ point sym (point *) ;
point p1 = {'P', 5, 8} ;
point p2 ;
p2 = sym (&p1) ;
cout << p1.c << " " << p1.x << " " << p1.y << "\n" ;
cout << p2.c << " " << p2.x << " " << p2.y << "\n" ;
}
104
Énoncé
Soit le type structure suivant, représentant un point d’un plan :
struct point { char c ; // nom attribué au point
int x, y ; // ses coordonnées
}
Écrire une fonction qui reçoit en argument l’adresse d’une structure du type point et
qui renvoie en résultat une structure de même type correspondant à un point de même
nom et de coordonnées opposées.
Écrire un petit programme d’essai.
Voici ce que pourrait être notre fonction (nous avons reproduit la déclaration de point,
laquelle pourrait éventuellement figurer dans un fichier en-tête séparé qu’on
incorporerait par une directive #include) :
#include
using namespace std ;
struct point
{ char c ;
int x, y ;
} ;
point sym (point * adp)
{ point res ;
res.c = adp->c ;
res.x = - adp->x ;
res.y = - adp->y ;
return res ;
}
Notez la « dissymétrie » d’instructions telles que res.c = adp->c ; on y fait appel à
l’opérateur « . » à gauche et à l’opérateur « -> » à droite (on pourrait cependant écrire
res.c = (*adp).c).
Voici un exemple d’essai de notre fonction (ici, nous avons utilisé les possibilités
d’initialisation d’une structure pour donner des valeurs à p1) :
main()
{ point sym (point *) ;
point p1 = {'P', 5, 8} ;
point p2 ;
p2 = sym (&p1) ;
cout << p1.c << " " << p1.x << " " << p1.y << "\n" ;
cout << p2.c << " " << p2.x << " " << p2.y << "\n" ;
}
104
