Per resoldre aquest exercici us caldran les definicions i els procediments dels problemes P46254, P84786 i P39799.
Feu una funció que indiqui la relació que tenen dos cercles @c1@ i @c2@ donats:
int relacio(const Cercle& c1, const Cercle& c2);
Cal que la funció retorni 1 si @c1@ és interior a @c2@, 2 si @c2@ és interior a @c1@, 3 si cap cercle és interior a l’altre però els cercles intersecten, i 0 altrament (si els cercles no tenen cap punt en comú).
Suposeu que no es produirà mai cap d’aquests casos extrems:
Els dos cercles intersecten en un sol punt.
Un cercle és interior a l’altre, però comparteix un punt amb la frontera del cercle gran.
Els dos cercles són iguals.
Feu un programa que llegeixi dos cercles inicials @c1@ i @c2@, seguits d’una sèrie d’ordres, i escrigui quina relació tenen @c1@ i @c2@ a cada pas segons es mostra en els exemples.
L’entrada comença amb dues línies, una per a @c1@, l’altra per a
@c2@, cadascuna amb tres reals (el tercer, el radi, estrictament
positiu). A continuació ve una seqüència de línies, cadascuna de les
quals comença amb un enter @i@ i una ordre @s@: @i@ val 1 o 2, i indica
a quin dels cercles cal aplicar l’ordre; @s@ val “mou” o
“escala”. Si @s@ val “mou”, a continuació
venen dos reals que indiquen l’increment de les coordenades. Si @s@ val
“escala”, a continuació ve un real estrictament positiu que
indica el factor d’escalat.
Cal escriure la relació entre els dos cercles a l’inici i a cada pas, segons es mostra en l’exemple.
Input
0 0 5 1 1 2 2 escala 10 1 mou 20 0.5 2 mou -5 -10
Output
el segon cercle es interior al primer el primer cercle es interior al segon els cercles intersecten els cercles no intersecten