點(diǎn)在哪

2018-06-19 14:17 更新

http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1404

Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 17  Solved: 3[Submit][STATUS][DISCUSS]

Description

給出一組圖形(矩形或圓)和一組點(diǎn)的數(shù)據(jù),判斷點(diǎn)的位置。

Input

輸 入一組圖形的數(shù)據(jù),其中每行以“c”開頭的表示圓,以“r”開頭的表示矩形,其中矩形是依次給出左下角和右上角的坐標(biāo),圓是給出圓心坐標(biāo)及半徑,圖形數(shù)據(jù) 以輸入另起一行的 *結(jié)束,接下來是給出點(diǎn)的坐標(biāo)(x,y),整個(gè)輸入文件以9999.9 9999.9結(jié)束,每行中的各個(gè)數(shù)據(jù)間用一個(gè)空格分隔。

Output

輸出點(diǎn)的位置如下信息:直接輸出到屏幕上,如某點(diǎn)在圖形上,則輸出所有圖形上的信息:point i is contained in figure j;如某點(diǎn)不在任一圖形內(nèi),則輸入:point i is not contained in any figure。

Sample Input

r 0.0 0.0 5.5 10.3
c -5.0 -5.0 3.7
r 2.5 2.5 12.5 12.5
*
2.0 2.0
4.7 5.3
9999.9 9999.9

Sample Output

point 1 is contained in figure 1
point 2 is contained in figure 1
point 2 is contained in figure 3

解題思路:

1.開辟兩個(gè)大小為1000的cir和rec數(shù)組,記錄輸入的圓和矩形

2.每輸入一個(gè)點(diǎn)進(jìn)行判斷輸出

核心代碼:

if(rec[i].num!=0&&cir[i].num==0)
    if(p.x>=rec[i].xl&&p.x<=rec[i].xr&&p.y>=rec[i].yl&&p.y<=rec[i].yr)//判斷是否在矩形中
    {
        cout<<"point "<<cntp<<" is contained in figure "<<rec[i].num<<endl;
        flag=true;
    }
if(rec[i].num==0&&cir[i].num!=0)
    if(((p.x-cir[i].x)*(p.x-cir[i].x)+(p.y-cir[i].y)*(p.y-cir[i].y))<=(cir[i].r*cir[i].r))//判斷是否在圓中
    {
        cout<<"point "<<cntp<<" is contained in figure "<<cir[i].num<<endl;
        flag=true;
    }



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)