Cercles (3) P52274


Statement
 

pdf   zip

thehtml

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.

Entrada

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.

Sortida

Cal escriure la relació entre els dos cercles a l’inici i a cada pas, segons es mostra en l’exemple.

Public test cases
  • 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
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++