Đề thi Đoạn thẳng và hình chữ nhật
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:
- De thi Toan Tin hoc trong nha truong Bai 76.doc