/*20131123 hanting*/
//與476幾乎一樣 只是多一個在圓形內的判斷//
#include <iostream>
using namespace std;
int main()
{
double x,y; // 測試的兩點
double r[100][400]; // 設置的矩形對角兩點的座標
double c[100][400]; // 設置的圓形圓心座標與半徑
char ch;
int k=1; //r[][]陣列中的位址
int s=0; //第s個點
while(cin>>ch && ch=='r'|| ch=='c')
{
if(ch=='r')
{
cin>> r[k][1] >> r[k][2] >> r[k][3] >> r[k][4]; //第k個矩形的對角兩點 // 左上 //右下 // r[k][1] 和 r[k][3]是x座標 //r[k][2] 和 r[k][4]是y座標
k++;
}
else if(ch=='c')
{
cin>> c[k][1] >> c[k][2] >> c[k][3]; //第k個圓形的圓心座標 // c[k][3]表示半徑
k++;
}
}
while(cin>>x>>y)
{
int ex=1; //判斷點是否在矩形或圓形內
if(x==9999.9 && y==9999.9) return 0;
s++; //第s個點
for(int i=1;i<=k;i++)
{
if(x>r[i][1] && x<r[i][3] && y<r[i][2] && y>r[i][4])// 點不能在邊上
{
cout<<"Point "<<s<<" is contained in figure "<<i<<endl;
ex=0;//ex=0時,表示點已經有在其中一矩形或圓形內
}
else if( (x-c[i][1])*(x-c[i][1]) + (y-c[i][2])*(y-c[i][2]) <c[i][3]*c[i][3] )// 點不能在邊上
//x與圓心x座標的距離平方 + y與圓心y座標的距離平方 < 半徑平方 即可說(x,y)在圓內
{
cout<<"Point "<<s<<" is contained in figure "<<i<<endl;
ex=0;//ex=0時,表示點已經有在其中一矩形內
}
}
if(ex==1)
cout<<"Point "<<s<<" is not contained in any figure"<<endl;
}
return 0;
}
2013年11月23日 星期六
[UVA] 477 - Points in Figures: Rectangles and Circles
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言