En un popular gestor de finestres, s’usa la definició següent per mantenir la informació de les finestres visibles a la pantalla de l’ordinador:
struct Rectangle {
int x_esq, x_dre, y_baix, y_dalt;
};
Aquí, els rectangles tenen els costats paral·lels als eixos @x@ i @y@, i @x_esq@, @x_dre@, @y_baix@ i @y_dalt@ són respectivament la mínima coordenada horitzontal, la màxima coordenada horitzontal, la mínima coordenada vertical i la màxima coordenada vertical de cada rectangle.
Feu un procediment que llegeixi un rectangle:
void llegeix(Rectangle& r);
el qual ve donat a l’entrada amb els quatre enters @x_esq@, @x_dre@, @y_baix@ i @y_dalt@ en aquest ordre.
Feu també una funció que indiqui la relació que tenen dos rectangles @r1@ i @r2@ donats:
int relacio(const Rectangle& r1, const Rectangle& r2);
Cal que la funció retorni 1 si @r1@ és interior a @r2@, 2 si @r2@ és interior a @r1@, 3 si cap rectangle és interior a l’altre però els rectangles intersecten, 4 si els rectangles són idèntics, i 0 altrament (si els rectangles no tenen cap punt en comú).
Suposeu que dos rectangles intersecten fins i tot si coincideixen només en un segment o només en un punt. A més, suposeu que tots els rectangles estan ben formats, és a dir, que @x_esq@ és estrictament més petit que @x_dre@, i que @y_baix@ és estrictament més petit que @y_dalt@.
Useu aquestes definicions i procediments per fer un programa que llegeixi una sèrie de parells de rectangles, i per a cadascun escrigui quina relació tenen.
L’entrada consisteix en un natural , seguit de línies, cadascuna amb dos rectangles (vuit nombres enters).
Per a cada parell de rectangles, cal escriure la seva relació segons es mostra en els exemples.
Input
6 2 3 4 6 0 5 2 8 0 10 0 10 9 10 0 1 0 2 0 2 1 3 1 3 -1 1 -2 2 -1 1 -2 2 0 1 0 2 5 7 4 7 0 2 0 2 2 4 2 4
Output
el primer rectangle es interior al segon el segon rectangle es interior al primer els rectangles intersecten els rectangles son iguals els rectangles no intersecten els rectangles intersecten