Solução Retângulos

Solução de Roger Benet, comentário de João Guilherme

Para ver o problema original, clique aqui.

Novamente temos um problema bem simples. Basta salvarmos os pontos dos retângulos em um vetor, depois, para cada ponto lido, checamos para cada figura se o ponto está contido nela, se estiver imprimimos de acordo. O maior cuidado está em usa um boleano que guarda se nosso ponto apareceu em dentro de pelo menos um retângulo, caso ele não tenha aparecido devemos imprimir "Point i is not contained in any figure".

Segue código para melhor entendimento.


#include <bits/stdc++.h>
using namespace std;
struct ret {
double x1,y1,x2,y2;
};
ret vet[20];
char c;
int i,sz;
double x,y;
bool check;
int main(){
while(scanf(" %c", &c) and c != '*'){
scanf("%lf %lf %lf %lf", &vet[sz].x1, &vet[sz].y1, &vet[sz].x2, &vet[sz].y2);
sz++;
}
while(scanf("%lf %lf", &x, &y) and x != 9999.9 and y != 9999.9){
check = false;
i++;
for(int j = 0; j <= sz; j++){
if(x > vet[j].x1 and x < vet[j].x2 and y < vet[j].y1 and y > vet[j].y2){
check = true;
if(check)printf("Point %d is contained in figure %d\n",i,j+1);
}
}
if(!check)printf("Point %d is not contained in any figure\n",i);
}
return 0;
}

view raw

retangulos.cpp

hosted with ❤ by GitHub