Cercles (3) P52274


Statement
 

pdf   zip

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++