Đề thi Đoạn thẳng và hình chữ nhật

doc2 trang | Chia sẻ: haohao | Lượt xem: 832 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đề thi Đoạn thẳng và hình chữ nhật, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 76/2001 - Đoạn thẳng và hình chữ nhật
(Dành cho học sinh PTTH)
Thuật toán:
- Xét đoạn thẳng cắt với từng cạnh của hình chữ nhật, điều kiện cắt của đoạn thẳng với một đoạn thẳng khác (cạnh của hình chữ nhật) là:
 + Hai đầu của đoạn thẳng khác phía với đoạn thẳng của hình chữ nhật;
 + Hai đầu của đoạn thẳng hình chữ nhật khác phía với đoạn thẳng.
Chương trình:
Program Bai76;
const inp= ‘input.txt’;
 out= ‘output.txt’;
function cat (xs, ys, xe, ye, xl, yt, xr, yb: real): boolean;
var a, b, x, y: real;
 lg1, lg2: boolean;
Begin
if xs=xe then 
begin
 lg1:=(xsxr) or ((ys>yt) and (ye>yt)) or ((ysxl) and (xsyb) and (ye>yb);
cat:=not (lg1 or lg2);
end
else begin
if ys=ye then 
begin
 lg1:=((xsxr) and (xe>xr)) or (ys>yt) or (ysxl) and (xe>xl) and (xsyb);
cat:=not (lg1 or lg2);
end
else begin
cat:=false;
a:=(ys-ye)/(xs-xe);
b:=ys-a*xs;
y:= a*xl+b;
if(y=yb)then cat:= true;
y: =a*xr+b;
if(y=yb)then cat:=true;
x:=(yt-b)/a;
if (x>=xl)and (x<=xr)then cat:=true;
x:=(yb-b)/a;
if (x>=xl)and (x<=xr)then cat:=true;
end;
end;
end;
procedure xuly;
var n, i: word; xs, ys, xe, ye, xl, yt, xr, yb: real;
fi, fo: text;
Begin
assign(fi, inp); reset (fi);
 assign (fo, out); rewrite(fo);
 readln(fi, n);
 for i:=1 to n do begin
 readln (fi, xs, ys, xe, ye, xl, yt, xr, yb);
 if cat (xs, ys, xe, ye, xl, yt, xr, yb) then writeln (fo, ‘T’)
 else writeln(fo, ‘F’);
 end;
close (fi);
close (fo);
end;
BEGIN
 xuly;
END.
(Lời giải của bạn Lê Mạnh Hà - Lớp 10A Tin - Khối PTCTT - ĐHKHTN - ĐHQG Hà Nội)

File đính kèm:

  • docDe thi Toan Tin hoc trong nha truong Bai 76.doc
Đề thi liên quan