TAILIEUCHUNG - Phương pháp xác định diện tích phẳng bị phủ bởi các hình chữ nhật

Bài toán: Trong mặt phẳng toạ độ trực chuẩn, cho N hình chữ nhật có các cạnh song song với trục toạ độ. Mỗi HCN được xác định bởi toạ độ đỉnh dưới bên trái và đỉnh trên bên phải của nó. Hãy tính diện tích phần mặt phẳng bị phủ bởi các HCN trên. Dữ liệu: Cho trong file gồm N+1 dòng. - Dòng 1. Chứa số N - Dòng i+1 : Ghi 4 số nguyên x1,y1,x2,y2 lần lượt là toạ độ đỉnh dưới bên trái và đỉnh trên bên phải của HCN i. Các số ghi trên một dòng cách. | PHƯƠNG PHÁP XÁC ĐỊNH DIỆN TÍCH PHẲNG BỊ PHỦ BỞI CÁC HÌNH CHỮ NHẬT Bài toán: Trong mặt phẳng toạ độ trực chuẩn, cho N hình chữ nhật có các cạnh song song với trục toạ độ. Mỗi HCN được xác định bởi toạ độ đỉnh dưới bên trái và đỉnh trên bên phải của nó. Hãy tính diện tích phần mặt phẳng bị phủ bởi các HCN trên. Dữ liệu: Cho trong file gồm N+1 dòng. - Dòng 1. Chứa số N - Dòng i+1 : Ghi 4 số nguyên x1,y1,x2,y2 lần lượt là toạ độ đỉnh dưới bên trái và đỉnh trên bên phải của HCN i. Các số ghi trên một dòng cách nhau ít nhất một dấu cách. Kết quả: Đưa ra màn hình diện tích phần mặt phẳng bị phủ bởi hình chữ nhật trên. Ý tưởng: - Lập mảng X[12n], Y[12n] lần lượt chứa hoành độ, tung độ các hình chữ nhật - Sắp xếp mảng X,Y tăng dần - Lần lượt kiểm tra các hình chữ nhật có toạ độ đỉnh trên bên phải (xi+1,yi+1) và toạ độ đỉnh dưới bên phải là (xi,yi) với . Nếu hình chữ nhật này thuộc một trong các hình chữ nhật ban đầu thì cộng thêm vào phần diện tích đang cần tìm diện tích của hình chữ nhật con này. Chương trình tham khảo: Const Maxn=1000; Type Toa_do = recordx1,y1,x2,y2:integer;end; mang=array[12*maxn] of integer; var N,s:integer; a:array[1maxn] of toa_do; X,Y:mang; {=======Doc du lieu=====} Procedure doc_dl; var f:text; i:integer; begin assign(f,''); reset(f); readln(f,n); for i:=1 to n do readln(f,a[i].x1,a[i].y1,a[i].x2,a[i].y2); close(f); end; {===Sap xep mang tang dan===} Procedure Sapxep(Var T:Mang); Var i,j,TG,m:integer; Begin m:=2*n; for i:=1 to m-1 do for j:=i+1 to m do if T[i]>T[j] then begin TG:=T[i]; T[i]:=T[j]; T[j]:=TG; end; end; {====Kiem tra HCN moi thuoc HCN da cho====} function Kiemtra_thuoc(i,j:integer):boolean; var k:integer; begin Kiemtra_thuoc:=true; for k:=1 to N do if (a[k].x1<=x[i-1]) and (X[i]<=a[k].x2) and (a[k].y1<=y[j-1]) and(Y[j]<=a[k].y2) then exit; Kiemtra_thuoc:=false; end; {========================================} Procedure Xuly; var i,j:integer; Begin for i:=1 to N do begin X[i*2-1]:=a[i].x1; X[i*2]:=a[i].x2; Y[i*2-1]:=a[i].y1; Y[i*2]:=a[i].y2; end; Sapxep(X); Sapxep(Y); for i:=2 to 2*N do for j:=2 to 2*N do if Kiemtra_thuoc(i,j) then S:=s+(X[i]-X[i-1])*(Y[j]-Y[j-1]); end; {====================================} Begin doc_dl; s:=0; Xuly; Write('Dien tich la:', S); readln; End. Tác giả:Võ Sỹ Ngọc GV Trường THPT Thành Sen TP Hà Tĩnh Đ/c Xã Thạch Bình - TP Hà Tĩnh - Hà Tĩnh ĐT: DD: School@net

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.