Download as pdf
Download as pdf
You are on page 1of 29
PHUONG PHAP GIAI TOAN HINH HOC BANG NGON NGU’ LAP TRINH PASCAL Tin hoc va nha truéng Qua qué trinh tham gia giang day va béi dung hoc sinh gidi chung tdi thay nhiéu bai toan di hdi hoc sinh phai tim ra mé hinh todn hoc cu thé tir yéu cu phifc tap cila bai todn. Thyc té cho thay nhitng hoc sinh cé kha nang van dung kign thifc todn hoc vo qua trinh phan tich d@ bai sé nhanh chéng phat hién dude m6 hinh todn hoc cla bai todn va dua ra I8i giai hgp ly. Viée hung cho hoc sinh phat hién ra nhifng méi lién hé cia bai todn cn gidi quyét vai céc kién thifc toan théng dung qua qué trinh tim hiéu néi dung bai togn la khéng dé dang gi. Véi mong mun phn nao gitip hoc sinh cing nhu gido vién trong viéc tim ra Io giai cho m6t sé dang bai ton thuéng gép trong chung trinh THPT can giai quyét lép trinh 46 la cdc bai todn hinh Age, chiing t6i xin gidi thigu phuong phdp gidi todn hinh hoc bang ngén ngif lép trinh Pascal ma ching tdi da 4p dung trong qua trinh ging day. 1. KHAI NIEM HINH HQC VA CAC BOI TUQNG HINH HOC CO’ BAN 1. Khai niém hinh hoc. Ba sé céc thuat todn du tp trung vao van ban va cic con s6, ching duige thiét ké va xt ly sin trong phn Ién cic méi truding lp trinh, Béi véi céc bai todn hinh hoc thi tinh huéng khdc han, ngay ca cdc phép toén sd cp trén diém va doan thang cling cé thé la mét thach thifc vé tinh todn. Cac bai ton hinh hoc thi dé hinh dung mét céch tryc quan nhung chinh digu dé lei 6 thé 18 mOt trd gai. Nhiéu bai toan cé thé gidi quyét ngay lép tic bing céch nhin vao mét manh gidy nhung lai doi hoi nhiing chung trinh khéng don gian. Vi dur Bai ton kiém tra mét digm cé nam trong da giéc hay khong? 2. Déi tugng h hc co ban. Trong cc bai todn tin hoc thudc loai hinh hoc © 3 déi tugng co ban la: Biém, doan thang va da gidc. ~ Biém: Buigc xdc dinh la cp (x,y) trong hé toa 46 dé cic. ~ Doan thing: La cp diém dug néi véi nhau bang mét phn cia duéng thang. - Ba gidc: La day cac diém ma 2 diém lién tiép néi vdi nhau bdi doan thang va diém dau 1néi véi diém cuGi tao thanh duding gdp khtic khép kin. 3. Dir ligu lu tri cdc déi tung hinh hgc co ban Type point =record x.y: integer; end; Line=record plp2: point; end; Var Polygon: Array[0..Nmax] of Point; II. MOT SO PHEP TOAN CO’ BAN 1. Vi tri tung déi cia diém so véi dudng thang, tia va doan thang Bai todn 1: Cho diém M&o¥2): ARAYA). BOBYS), yeu cau: a) Kiém tra M ¢6 thudc dung thang di qua 2 diém A, B hay khong? b) Kiém tra M 06 thuéc doan thang AB hay khéng c) Kiém tra M c6 thudc tia AB hay khong Phuong phap: pat FOCY)= (Ya-ya)X + GaXa)¥ + aya -XBya) - Biém M thuéc dudng thang AB khi FSo.¥o) = 0 = Diém M thudc doan thang AB khi: Feeays)=0 vd Mintcsx9) So< Maxtcaxa) va Minbv ~ Diém M thuéc tia AB khi Fixo.yo) = 0 va AM =48 c6 nghia 13 M phii thoa min diéu Kidu: Fise,ye) =O vd Gxo-xlcexg20 va Gissahe 20 yu) Syo 0112 | pithing2 cétdahing 3 1189 Y tuéng: ~ M6i duding thang dude dc trunng bdi 3 théng s6 a,b,c dude xac dinh: at=(yl-y2); br=(x2ex1) ; =xLAy2-x2*y1; - Hal dung thang cdt nhau khi: D:=a1*b2-a2*b1 ? 0; ‘Chuong trinh: ype = duhang-record «x1, yi, x2, y2:inveg ead? heso=record a,b, crinbeger: end; var pusarray{1..100} of hesa? fivext: aiineeger: _ 3 procedure — doc_DE; var £,x1,yi,x2/¥ begin assign(t, ‘dt inp") reset (#); wn not e07(r) do begin sesete readin (#,21, y1,22,y2): p(s] .a:=(yi-y2)s pe(i] .br={x2-x1) : po[a] .crsxitya-aaeyte close (£)+ end: {eeeKiem tra 2 dmong thang cat nnau ==} Function Krra(pti,pt2:hesa) :boolean; begin Diapti.aspt2-b-pt2-a*ptt bs 20 then ktra:-tiue else Etza:=feise; giao diem procedure ac_dinhe var i,jiintegers —ktibooleany begin gristaise: For i:=1 to n-l de For j:=141 to 2 do 32 ktra(ptiil.rt{il) then begin writeln('Duong thang',i,‘cat ducng thang", 3}: kerecrue: end: if nce Er then writeln ("khong co cep duong thang cat end: ‘ Begin 80¢_Dh: Xacvainn: readin: Ena. VD;, Biém thudc da gidc. Cho da gidc khéng ty cat A:A...Aw vi cdc dinh A(x.yi) nguyén. Véi dim A(xa,ya) cho trudc, hay xéc dinh xem A c6 nam trong da gid 43 cho hay khéng (Trong trying hgp trén canh da gidc xem nhu nam trong da gidc) Dif ligu: Cho trong tép Dagiac.inp + Dong dau [a so N + N déng tiép theo mdi dong ghi x,y; la toa d6 A + Dong n+2 ghi 2 s6 x, va ya Dif ligu 1a céc s6 nguyé Dagiacinp equa 3 Die A010) oo Kong nam tong da giac 20 03 32 1010 Két qua: Bua ra man hinh théng bao diém A cé n’m trong da giéc hay khéng ¥ twéing: - Litu toa dé cdc dinh da gidc vao mang A - Kiém tra xem diém A o6 tring vdi dinh da giéc - Kim tra xem diém A 06 n&m trén canh da giac - Tim giao diém néu c6 atia tia Ax (Ax//Ox va Ax huéng theo phn dung tryc hoanh) v6i céc canh clia da gidc. Trung hop tia Ax chifa doan thang canh da gidc ta xem nhu tia Ax ¢6 1 diém chung vdi canh nay. Cy thé: + Gia si diém A(xo,yo), chon diém B(x, Yb) Voi xy=Xot1, + Kiém tra tia AB ob ct doan thang CD bing cach: B;. Tim giao diém N cla 2 dung thang AB va CD Tinh al:=yb-ya; b1. xb; c1:=ya*xb-xa*yb; a2:=yd-yc; b2:=xe-xd; c2:=yctxd-xc*yd; -a1*b2-a2*b1; Dx:=¢2*b1-cl*b2; Dy:=a2*cl-al*c2; Xc dinh: N&u D #0 thi toa d6 giao diém la N(Dx/D,Dy/D) B2. Kiém tra N cé thudc tia ‘AM va doan thang CD hay khéng. - Biém N_ thugc doan thang CD Khi: Min(Xc,Xo) $xn S$ Max(Xc,Xv) va Min(yayo) < yN < Max(Yc,Yo) ~ Diém N thugc tia AB khi AN’ =ic4B c6 nghia | N phai thod man diu kién: (xu Xa)(XerXa) 20 va (Yn-¥a)(Yerva) 20 + kiém tra tia AB chua canh CD hay kh6ng bing céch: (yc=yd)and(yc=yo) - Dém 56 giao diém, néu s6 giao diém lé thi A thudc da gide Chwong trinh: sonar maxn=100: ‘Type xyerecord x, var n:hyte; srray[1..maxni] of ayy at, a2,x1/x2,¥1,v2-b1,b2, ¢2,62,D,Dx,Dy:Real: x, dam, dani, itinvegery eat; ends — procedure Doc_DL: vex f:text: begin assign (t,‘DL.INP*}: xeset(Z); readia(t,n) Eilichar (A, Size0E (A) | for i:-1 condo readin(2,A[1).x,Ali].¥) readin (£,A(N2].x/Ain+2] «¥) A[ne1]:=A[1]z close(z)z ena? function kientradinh:hocles begin Kiemcradianretrue; for i:-1 to a do Af (AL{]-xeA[ae2] x) and (ALL] yeaine2].y) chen exit: wiemcradian:“faise; enc: function kientracanh:bociean: begin kientracann:=true; for i:=1 tan da AE Alne2].x* (RUA) -y-RUS+1] -y) #AUne2] -y* (REAL ALL + ALA] -x*A[aea] -y-ACA] .y*A(d+2) 4-0 then exer: kiemtracanh:=faiee: ena; {eee Kiem tra Ax co chaa canh da giac hay cat canh da giacm==} Funezion kiemra_gisodiem (x0, yo,x¢, v6, x0, yatreat) thosteans Yer xa, ya, ab, yp:Eea1; Kiem tra diem thuse doan thuoe doan Function Htra(xo, yo,xa,¥a,xb, ybireat) :hoolean; var maxi,mini,max2,min2:real: begin if zabab then begin Maxi:exarmin: Af ya>yb then begin Max? :eya;nin: Af [mini<-xo) and (xot~maxl) end (mind<=ye) and (yoe-maxz) then Kera:=true else Ktra: enay fala xarezo;yarsyormb:exotl;ybi-yo: alieyb-vay blrexa-xb; cl:tyateb—aa*yb: e2isyd-ye: b2i=xe~xd: yernd-noPys : Dx:=c2*bi-ci*b2: Dy:wa2tci-aite2: Af ({DE90) and (kera(Dx/D, Dy/D, xc, yo,x3,¥a)) and ({Dx/Dexa)* (xbexa)>e0) and {(Dy/D-ya) * (yb-ya} >=0) ] r ((yomvd)ana(ye=ye) ) then kiemtra_giasdicn: endz rue else kiemtra giasdiem:-false; 7 function kiemtra:bosieen: begin f kiemtradinn then exit: VDz, Bém sé diém cé toa dé nguyén thudc da gidc Cho da gide gdm n dinh (x1,y1), (2,y2), ..., (xn,yn), biét xi va yi(i=1,....n) [8 cdc $6 Aguyén trong doan [-10°,10°]. Cac dinh duc liét ké theo thir ty cling chiéu kim dng hi. Vigt chung trinh tim sé diém cé toa 46 nguyén ném trong hay trén bién da gidc. DLINP [KQoET a 3 00 33 40 21 Dif liéu: Cho trong tép tin DL.INP. ~ Dong dau chifa s6 nguyén duy nhat cho biét sé dinh. ~ Tip theo la cdc ding, trén méi dong ob 2 s6 nguyén cich nhau mét khoang trang fan lugt la hoanh 49, tung 46 cic dinh da aide. Ket qua: Xuat ra man hinh s6 diém c6 toa 46 nguyén ném trong hay trén bién da giéc Y tuéng: - Tinh a,b theo céng thifc: ~ Xéc dinh s6 diém c6 toa 46 nguyén: Sd=round(abs(a/2)+b/2+1) Chuédng trinh: assion(f,'dagiac.inp'); ces readin(f.n); readin(=,x,y]: xticny yee readin|f,x,¥) (x5) Fy yt) sb rebsOCEh (abe (x-xt) ,abs(y-yt) |: + (xx) * (yy) ¢ |AUCEN fabs (x1-x) , aba (yi-y)) 2 round {ebs(a/2) 4/242): readin; Dang 2.Tinh dign tich da gide Phung phép: Gia str cho da gidc c6 n dinh va toa 46 cdc dinh luu vao mang a. Dé tinh dién tich da giéc ta lam nhu sau: Buéc 1. Gan thém dinh phy: a[n+1]3 [1]; afn+t]y:=al1]y; Buc 2. Dién tich da gidc tinh theo céng thie: s=| Serene. Xai +y+ailyy/2 | Litu y: Cé thé dp dung céng thife khac 48 tinh dién tich trong cdc truting hgp dic biét. - Néu da gidc Ia tam gidc (n=3) thi dign tich tinh theo céng thitc: S = |@tb+Natb—hate—Bete— a4 - N6u da gidc la hinh chit nhat (n=4) o6 cdc canh la a,b thi dign tich la: S=ab - Néu da gidc Ia hinh vuéng (n=4) 06 canh [a a thi dign tich la: S=a2 ~ Néu da gidc la hinh tron o6 ban kinh R thi dién tich la VD1. Xéc dinh dign tich da gid Cho N da gléc [61 ArAaAs...AnsAn Val Gc dinh Al(x,yi) c6 toa 46 nguyén. Hay tinh dién tich da giée trén, DLINF Ragu 5 #400 8-80010-24-50 Dif ligu: Cho trong file DLINP gdm 2 dong + Dong 1: Chita sé nguyén dung N = Dong 2: Chita 2xN s6 nguyén ducng x1 yl x2 y2...xN yN la toa dé cdc dinh clia da gidc. Mdi s6 ghi céch nhau mot du céch. Két qua: Xuat ra man hinh dién tich da gidc. Y tudng: ~ itu toa d6 cde dinh da gidc vao mang toado ~ Sur dung céng thitc tinh dign tich da gide: type dthangerecord x1, y1,x2,yasinteg esa; hego-revczd a,b, ctinteger: end: rray(1..100] of hesoz a:iateger; procedure doc BI: var 3,x1,yi,x2,yi ateger; agaign (=, 'dt.inp") react (=)7 while not eof (Ft) do begin aisisde readin (f,x1, ¥1,x2,y2) + peli] bim(xd-x2) 7 peli} cr-ud*y2-aatyte close (2)? ends (oo-xiem tra 2 dnong theng cot nheu Function Ktra(pel,ptg:nesa) :hoclean; var Diiateger: begin Drepei.atpr2-b-pe2.atpti.b: Af 5<>0 then ktra:-true else Ktra:sfelse; ena: (eeetio giao dienes) progadure: ac_dinhy var i,jiinteger: ktibeolean: begin icistelse: For i:=1 to n-l do Yor j:=ie1 ton de Af ktra(pt(i],nt(3]) then begin yrireln('Duong thang’, 1,"cat auong tnang',3)7 keistrue: ena: if not kt then writeln ("khong co cep duong thang cat end: ¢ Begin doe DL: ac dinh: zeading End. eonat maxn=109; type xy-recerd Rrysinteger: end? var Toada:array(1..maxn+1] of xy: A,itinteger: strealy Beocadure Mnap; gin ‘assign (f,‘DL.TXI") 3 eset (t| readin (£,0); f Aton do read(£,Toadola] .x,teado [i] .¥)é ciose(r); end: (nenenen een en enn emennememnnmemeneenes) Procedure Dientich; begin 5:0; Toado {nel} .x:-Toadott) -x: Toada [net ado (1) -¥ ton de (Toado (+2) .x- weiveln('Dien tich da giac :*, abe(2):0 zeadin: end: Begin Mhap; Dientich; ‘ado [4].m) * (Tondo [42] .ystonde [3] «y]/2s Ne Ena. \b2. Day hinh chif nht Trong mat phang toa dé tryc chun, cho N hinh chif nhat 6 cdc canh song song véi truc toa 6. Mi HCN duc xéc dinh bei toa dé dinh duéi bén trai va dinh trén bén phai cla n6. Hay dua ra day cdc hinh chif nhat theo thi’ ty tng dan ign tich . Dif ligu: Cho trong file HCN.inp gdm N+1 ding. ~ Dang 1. Chita sé N -Dong i+1 (1 813) then begin worvefily © afile-atil: 2 ends procedure | ketqua: ntegsr? £, HOM, owe!) 7p eaneesee ce) ¢ acon de writein|f,al2} x1," *,a(i)-v1,* ‘,ali]a2," ‘a(t sapsep; ketquay Dang 3. Xac dinh dign tich phu bai cdc hinh chi nhat Phuong phdp: Gia sit c6 n hinh chit nhat. Bé tinh dign tich phil béi n hinh chit nhat ta lam nhu' sau: Buéc 1. Sif dung a,b lan luot la cdc mang lu hoanh 48 va tung 46 cdc dinh hinh chit hat (mdi hinh chi nhat chi cn Iuu toa d6 2 dinh déi dién qua tm hinh chi nhat). Buéc 2. Sap xép mang a,b theo thi ty tang dan Bude 3. Lan Iuot kiém tra cdc hinh chif nhat 06 toa d6 dinh trén bén phai (xj-1,yie1) va toa d6 dinh duéi bén phai la (x,yi) véi 1 TT31 then begin ‘Tee=T (2) Tal :=T1a1; TE] =18s ends sad; {o-"-Kiem tre HCW moi thucc HO de cho~ Sunctien Kientra thone (2, :integer var e:anteger: begin Sf (a{K] mie=x[4-2]) and (X(4] naxx then aft] -azomexx then a[t]-ylomaxy then a [i] -y2maxy then maxint; minyicmaxints max siose(z): naz “ Sep xep mang tang dan Procedure sapsep(var t:mang): var 2,3,7G,mramteger begin misatny fox a:“1 te m-1 do for 7:1 tom ao if TUITE] then begin Te:=c14}? TETE1s ‘BU3)2=762 end: ends ‘ lem tra HCN moi thucc BEN da cho- function Kiemtra Thucc(2,3:integer) :pcolean: var kianteger/ begin wiemtra_thuoci~true: for kisi ten do SE (afi) -xicex[i-1]) and (x(2] <=a fe) -2) and (afk) -yicwy(3-1]) and (yij]v chen 2 goc(BGim] ,-DG[i]) =y1[]) and (62[1]>=x2[j]) and (y2[i]<=y2{)]) ~ Xéc dinh s6 lugng cdc HCN bao HN i va Iu vao phan ti mang kq[i] biét rang: nu thi kali]: =kqlj]+4 + Chirong trinh: War x1, yi,a2-y2;karerrey[1..1000] of integer; integer: fi, forcext; “ 5 Procedure Doc_Di: var izinteger! Begin Assign (#i,HCN.inp'): reset (#i); readin (£i,n) 2 for ize1 to n do read(fi,wi{i), yi [3] ,x2[4],y2[i))+ elase(Ei): Procedure Qaort (1,r:integer|; Var 4,3)mid, esinceger: Began’ midi=(itz) div 23 sist: gimee Repeat while OT HCM(2)DT_HCM{mid) do dec(3)? then cecal tis ala g9ye ox2ES] 2 x2 [4] emx2 Ed? oytLS]s yA[S] sev f31 yaa]? yaa iy]? end: a3: Af ace then qaorc(i,x); Sf g>3 then qeore(2,4 1 fungtson Bac (i, J:integer) integer; Bema $f (x2[A]<=e1(4)) and (yLES}>=¥1EH)) and (x2(4]9=x2091) and {ya{i}<=ya[J]) then pact=1 else baci=05 end: on Erocedure Xuly: “ BEGIN oc_Drs qsorc tien)? xuly: assign(fo,HCH-our'); xewzite (Zo): writein(r9, tmp): clos=(f0)7 END. Vi dy 4, Hinh chi nhat bao nhau Hinh chit nhat A bao hinh chi nhét B néu moi diém thuéc hinh chit nhét B déu nam trong hoc thudc hinh chi nhat A. Trong mat phang Oxy cho n hinh chit nhat ob cdc cach song song véi cic tryc toa d6. Yéu Gu: 1, Tim 6 hinh chi nhat bao nhau nhigu nhét (s6 lugng hinh phai >1). 2, Trong s6 cdc tap hinh chit nhat bao nhau, tim tap cc hinh chit nhat bao nhau 5 téng dién cdc dién tich cia cdc hinh chi nhat trong tap la Idn nhat. 3. Tim higu dién tich cla hinh chi nhat nho nhat bao tat ca cdc hinh chif nhdt 64 cho véi dién tich cua phn m&t phang bi phil bdi cdc hinh chiy nhat da cho. Dif ligu vdo: Cho trong tép van ban HCN.IN ~ Dang dau: n (sé lugng hinh chi nhat, 1baofi,j]) va (bao[i,k]>0) va (bao[k,j]>0). Sir dyng mang KQ dé luu cdc hinh chi nhat k thoa man ~ Hinh chi nh&t nhé nhat bao tt cd cdc hinh chif nhét 4 cho la hinh chit nhat c6 toa 49 g6c duBi Phai 1a (Xin, Ymin) Va toa 46 géc trén trdi 13 (XmaxYrax) = Phuong phap tim dién tich phu da trinh bay 6 dang 3 const maxne100; Type Toa_do-zecord xi, vi, x2, y2:invege: fmaxn] of integer: maxn,1..maxn) of antegex; ming, miny,maxe,mexy,niinveger: xi, yiyn2,y2tarray[1..nagn] of integers wqiarray(1..maxn,1..maxa] of byte, s)oac:nengi ‘ Tunetion min{a, begin Af abh then minis eae minie: senescent integer) :imteger; end: Procedure DocDL: var Gtinteger; Begin assign (E,"HCN-IN"); reset (£); reedin(£,n)? for tie te sas begin read |£-x1(],y1 (4) ,*2 ali} -xde-xi [i ar ali} .xicunx if ali] -x2eninx if alt] .yleuiny if ali] .yaeuiay if ali] xipnexx Sf afi] xanax if ali] .yipmaxy if afi] -yaomexy ena: elese(=)1 end; t procedure Xuat|x,¥tinteger) : begin Af kqtx,y]90 then wrire(fiz,* *) else auat |x, kalx,¥1) 4 writelft,y," ") ena; t function DT (s:integer) :anteger; begin dbsmabs {ad (]-2[4]) *ebs {y1 (2) -y21a1) 2 end: c function kt ra_bag(i,j:ntever) isfelee: Af (Bin (x2 [J] ,x2¢9])>-mta (xd [4], 22[4])) and (min (yi[31,-v2{3])>=mea(yi(t},¥2[2})) and (nay (2 (31/22 [9] )

You might also like