Points in Figures系列
UVa476-478
UVa476-长方形版
1 var
2 cas,ca,i:longint;
3 ch:char;
4 x,y:extended;
5 bo:boolean;
6 x1,x2,y1,y2:array[1..11]of extended;
7 function pd(x1,y1,x2,y2,x,y:extended):boolean;
8 begin
9 if (y1>y)and(y>y2)and(x1<x)and(x<x2) then exit(true);
10 exit(false);
11 end;
12 begin
13 cas:=0;ca:=0;
14 read(ch);
15 while ch<>'*' do
16 begin
17 inc(cas);
18 readln(x1[cas],y1[cas],x2[cas],y2[cas]);
19 read(ch);
20 end;
21 readln(x,y);
22 while (x<>9999.9)and(y<>9999.9) do
23 begin
24 bo:=false;
25 inc(ca);
26 for i:=1 to cas do
27 begin
28 if pd(x1[i],y1[i],x2[i],y2[i],x,y) then
29 begin
30 bo:=true;
31 writeln('Point ',ca,' is contained in figure ',i);
32 end;
33 end;
34 if not(bo) then writeln('Point ',ca,' is not contained in any figure');
35 readln(x,y);
36 end;
37 end.
UVa477-长方形+圆形版
1 var
2 cas,ca,i:longint;
3 ch:char;
4 x,y:extended;
5 bo:boolean;
6 x1,x2,y1,y2:array[1..11]of extended;
7 sx:array[1..11]of char;
8 function pdr(x1,y1,x2,y2,x,y:extended):boolean;
9 begin
10 if (y1>y)and(y>y2)and(x1<x)and(x<x2) then exit(true);
11 exit(false);
12 end;
13 function pdc(x1,y1,r,x,y:extended):boolean;
14 begin
15 if sqrt(sqr(x1-x)+sqr(y1-y))<=r then exit(true);
16 exit(false);
17 end;
18 begin
19 cas:=0;ca:=0;
20 read(ch);
21 while ch<>'*' do
22 begin
23 inc(cas);
24 sx[cas]:=ch;
25 if ch='r' then readln(x1[cas],y1[cas],x2[cas],y2[cas]);
26 if ch='c' then readln(x1[cas],y1[cas],x2[cas]);
27 read(ch);
28 end;
29 readln(x,y);
30 while (x<>9999.9)and(y<>9999.9) do
31 begin
32 bo:=false;
33 inc(ca);
34 for i:=1 to cas do
35 begin
36 if sx[i]='r' then if pdr(x1[i],y1[i],x2[i],y2[i],x,y) then
37 begin
38 bo:=true;
39 writeln('Point ',ca,' is contained in figure ',i);
40 end;
41 if sx[i]='c' then if pdc(x1[i],y1[i],x2[i],x,y) then
42 begin
43 bo:=true;
44 writeln('Point ',ca,' is contained in figure ',i);
45 end;
46 end;
47 if not(bo) then writeln('Point ',ca,' is not contained in any figure');
48 readln(x,y);
49 end;
50 end.
UVa478-长方形+圆形+三角形
1 var
2 cas,ca,i:longint;
3 ch:char;
4 x,y:extended;
5 bo:boolean;
6 x1,x2,y1,y2,x3,y3:array[1..11]of extended;
7 sx:array[1..11]of char;
8 function pdr(x1,y1,x2,y2,x,y:extended):boolean;
9 begin
10 if (y1>y)and(y>y2)and(x1<x)and(x<x2) then exit(true);
11 exit(false);
12 end;
13 function pdc(x1,y1,r,x,y:extended):boolean;
14 begin
15 if sqrt(sqr(x1-x)+sqr(y1-y))<=r then exit(true);
16 exit(false);
17 end;
18 function hl(x1,x2,x3:extended):extended;
19 var
20 p:extended;
21 begin
22 p:=(x1+x2+x3)/2;
23 hl:=sqrt(p*(p-x1)*(p-x2)*(p-x3));
24 end;
25 function pdt(x1,y1,x2,y2,x3,y3,x,y:extended):boolean;
26 var
27 v:array[1..6]of extended;
28 begin
29 v[1]:=sqrt(sqr(x-x1)+sqr(y-y1));
30 v[2]:=sqrt(sqr(x-x2)+sqr(y-y2));
31 v[3]:=sqrt(sqr(x-x3)+sqr(y-y3));
32 v[4]:=sqrt(sqr(x1-x2)+sqr(y1-y2));
33 v[5]:=sqrt(sqr(x1-x3)+sqr(y1-y3));
34 v[6]:=sqrt(sqr(x2-x3)+sqr(y3-y2));
35 if abs(hl(v[1],v[4],v[2])+hl(v[2],v[3],v[6])+hl(v[1],v[3],v[5])-hl(v[4],v[5],v[6]))<=(1e-9)
36 then exit(true)
37 else exit(false);
38 end;
39 begin
40
41 cas:=0;ca:=0;
42 read(ch);
43 while ch<>'*' do
44 begin
45 inc(cas);
46 sx[cas]:=ch;
47 if ch='r' then readln(x1[cas],y1[cas],x2[cas],y2[cas]);
48 if ch='c' then readln(x1[cas],y1[cas],x2[cas]);
49 if ch='t' then readln(x1[cas],y1[cas],x2[cas],y2[cas],x3[cas],y3[cas]);
50 read(ch);
51 end;
52 readln(x,y);
53 while (x<>9999.9)and(y<>9999.9) do
54 begin
55 bo:=false;
56 inc(ca);
57 for i:=1 to cas do
58 begin
59 if sx[i]='r' then if pdr(x1[i],y1[i],x2[i],y2[i],x,y) then
60 begin
61 bo:=true;
62 writeln('Point ',ca,' is contained in figure ',i);
63 end;
64 if sx[i]='c' then if pdc(x1[i],y1[i],x2[i],x,y) then
65 begin
66 bo:=true;
67 writeln('Point ',ca,' is contained in figure ',i);
68 end;
69 if sx[i]='t' then if pdt(x1[i],y1[i],x2[i],y2[i],x3[i],y3[i],x,y) then
70 begin
71 bo:=true;
72 writeln('Point ',ca,' is contained in figure ',i);
73 end;
74 end;
75 if not(bo) then writeln('Point ',ca,' is not contained in any figure');
76 readln(x,y);
77 end;
78 end.

浙公网安备 33010602011771号