BAI TON 1: VIET CHUONG TRNH NHAP VO TOA O BA INH CUA MOT TAM GIC, XUAT RA CHU VI, DIEN TICH, V TINH CHAT CUA TAM GIC (EU, CN, VUNG)
MOT S NOI DUNG CHUAN BI: -oc sch gio khoa, Bi tp v thuc hnh 7, trang 105 108 -Xc dinh bi ton, tm hiu cch xu l bi ton bng ton hoc -Hiu tai sao cn phai dinh ngha kiu d liu c cu trc (DIEM, TAMGIAC) -Hiu tai sao cn phai su dung cc thu tuc, hm nhu trong bi mu cua SGK
YU CAU: chuong trnh duoc xy dung dui dang cc chuong trnh con (thu tuc v hm), tn dung vic khai kiu d liu c cu trc (record cho dim v tam gic)
1. XC INH BAI TON
Input: Toa d 3 dinh tam gic ABC,vi A(x A , y A ), B(x B , y B ), C(x C , y C ) Output: chu vi, din tch, tnh cht: du, cn, vung
2. PHN TCH VA THIT K a. Phn tch: -Thnh phn d liu: Input: s thuc x A , y A , x B , y B , x C , y C Output: s thuc chuvi, dientich chui thng bo tam giac can, tam giac deu, tam giac vuong
-Thnh phn xu l: Nhp toa d dinh 1. Tnh d di canh a, b, c 2. Tnh chu vi = a + b + c 3. Tnh din tch = sqrt(p(p-a)*(p-b)*(p-c)) vi p = (a+b+c)/2 4. Kim tra tnh cht Nu a = b = c th l deu Nu a = b hoac b = c hoac c = a th l can Nu a 2 +b 2 =c 2 hay a 2 +c 2 =b 2 hay b 2 +c 2 =a 2 th l vuong 5. Xut chu vi, din tch, tnh cht: du, cn, vung tuong ng
b. Thit k -on vi d liu: Input: x A , y A , x B , y B , x C , y C = real; Output: chuvi, dientich: real; deu, can, vuong: boolean;
Cai tin: su dung cch dinh ngha kiu d liu c cu trc (RECORD) (*MO TA DIEM CUA TAM GIAC *) Diem = record x, y: real; End;
(* MO TA TAM GIAC VOI BA DINH A,B,C *) Tamgiac = record A,B,C: Diem; End;
-on vi xu l: su dung cc chuong trnh con nhu sau Luu : tm hiu su khc bit khi su dung hm v thu tuc, cch truyn tham bin v truyn tham tri trong cc hm v thu tuc cua chuong trnh ny. 2
(*HAM TINH KHOANG CACH GIUA 2 DIEM P, Q *) Function Kh_cach (P,Q: Diem):real;
(*THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA DO DAI CUA 3 CANH a,b,c*) Procedure Daicanh(var R: Tamgiac;var a,b,c: real);
(* HAM TINH CHU VI TAM GIAC R *) Function Chuvi(var R: Tamgiac): real;
(* HAM TINH DIEN TICH CUA TAM GIAC R *) Function Dientich(var R: Tamgiac): real;
(* THU TUC HIEN THI TOA DO 3 DINH TAM GIA LEN MAN HINH *) Procedure Hienthi(var R: Tamgiac);
(* THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA TINH CHAT TAM GIAC *) Procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);
- So d thu tuc/hm:
-Thut giai chi tit: Su dung luu d d th hin cc thut giai chi tit kh, phc tap Hung dn v luu cc dim kh trong chuong trnh
(* THU TUC HIEN THI TOA DO 3 DINH TAM GIA LEN MAN HINH *) Procedure Hienthi(var R: Tamgiac); Begin writeln('toa do 3 dinh cua tam giac la:'); writeln('- Dinh A(',R.A.x:0:3,', ',R.A.y: 0:3,')'); writeln('- Dinh B(',R.B.x:0:3,', ',R.B.y: 0:3,')'); writeln('- Dinh C(',R.C.x:0:3,', ',R.C.y: 0:3,')'); End;
(*HAM TINH KHOANG CACH GIUA 2 DIEM P, Q *) Function Kh_cach (P,Q: Diem):real; Begin Kh_cach :=sqrt((P.x-Q.x)*(P.x-Q.x) +(P.y-Q.y)*(P.y-Q.y)); End;
(*THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA DO DAI CUA 3 CANH a,b,c*)
Procedure Daicanh(var R: Tamgiac;var a,b,c: real); Begin a:=Kh_cach(R.B,R.C); (* a la do dai canh BC *) b:=Kh_cach(R.A,R.C); (* B la do dai canh AC *) c:=Kh_cach(R.B,R.A); (* c la do dai canh AB *) End;
(* THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA TINH CHAT TAM GIAC *) Procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean); Var a,b,c:real; Begin Deu:=false; Can:=false; Vuong:=false; Daicanh(R,a,b,c); If(abs(a-b)< eps) and (abs(a-c)< eps) then Deu:=true;(*kiem tra deu*) Else If(abs(a-b)<eps) or (abs(a-c)<eps) or (abs(b-c)<eps) then Can:=true; (*kiem tra can*) If(abs(a*a+b*b-c*c)<eps)or(abs(a*a+c*c-b*b)<eps)or(abs(b*b+c*c-a*a)<eps)then Vuong:=true; (*kiem tra vuong*) End;
3. CAI AT CHUONG TRNH
(* KHAI BAO BIEN TOAN CUC *) Var T:Tamgiac; Deu,Can,Vuong: boolean;
(*CHUONG TRINH CHINH *) Begin CLRSCR; writeln('nhap vao toa do 3 dinh cua tam giac'); write('toa do dinh A : '); readln(T.A.x,T.A.Y); write('toa do dinh B : '); readln(T.B.x,T.B.Y); write('toa do dinh C : '); readln(T.C.x,T.C.Y); writeln('===================================='); Hienthi(T); writeln('Chu vi : ',Chuvi(T):9:3); writeln('Dien tich : ',Dientich(T):9:3); Tinhchat(T,Deu,Can,Vuong); if Deu then writeln('TAM GIAC ABC BAN VUA NHAP LA TAM GIAC DEU'); if Can then writeln('TAM GIAC ABC BAN VUA NHAP LA TAM GIAC CAN'); if Vuong then writeln('TAM GIAC ABC BAN VUA NHAP LA TAM GIAC VUONG'); readln; End.
4. BO D LIEU KIEM TRA (EPS=1.0E-3)
A B C Chu vi Din tch Tnh cht 1 1 12 12 -9 -9 59.397 0.000 SAI 7 9 13 6 0 12.5 29.069 0.000 SAI 2 -3 3 -2 1 -1 5.886 1.500 TGIAC CAN -1 2 3 4 3 2 10.472 4.000 TGIAC VUONG 2 30 15 20 15 40 52.802 130.000 TGIAC CAN 0 0 3 4 4 3 11.414 3.500 TGIAC CAN 0 0 3 0 1.5 2.599 9.002 3.899 TGIAC DEU
4
BAI TON 2: MO RONG CUA BAI TON 1. VI CC YU CAU SAU: 1. KIEM TRA D LIEU AU VO, TOA O CC INH PHAI THOA MN TAO THNH TAM GIC Hung dn: kim tra diu kin sau a+b > c v a+c > b v c+b>a (a,b,c l canh tam gic)
2. KIEM TRA UOC THM TINH CHAT VUNG CN, THUNG Luu : trung hop tam gic du cng l tam gic cn khng hin thi thng bo l tam gic du, v tam gic cn
BAI TON 3: Vit chuong trnh su dung cc hm v thu tuc d xy dung o bi ton 1 d giai bi ton. Cho tp d liu TAMGIAC.DAT c cu trc nhu sau: a. Dng du tin cha s N; (* s luong tam gic *) b. N dng tip theo, mi dng cha su s thuc x A , y A , x B , y B , x C , y C l toa d 3 dinh A(x A , y A ), B(x B , y B ), C(x C , y C ) cua tam gic ABC. Hy nhp d liu tu tp d cho v trong s N tam gic d, dua ra tp TAMGIAC.OUT gm 3 dng: Dng du tin l s luong tam gic du; Dng th hai l s luong tam gic cn (nhung khng l du); Dng th ba l s luong tam gic vung
Hung dn: su dung 2 chuong trnh con Daicanh v Tinhchat Cung vi cc thu tuc xu l tp nhu assign, reset, readln, writeln
1. CAI AT CHUONG TRNH
(* KHAI BAO BIEN TOAN CUC *) Var n,i,deu1,can1,vuong1:integer; f:text;
(*CHUONG TRINH CHINH*) Begin CLRSCR; Assign(f,'TAMGIAC.DAT'); Reset(f); Read(f,n); deu1:=0; can1:=0; vuong1:=0; For i:=1 to n do Begin Read(f,T.A.x,T.A.Y); Read(f,T.B.x,T.B.Y); Read(f,T.C.x,T.C.Y); Hienthi(T); Tinhchat(T,Deu,Can,Vuong); If Deu then deu1 := deu1 + 1; If Can then can1 := can1 + 1; If Vuong then vuong1 := vuong1 +1 ; End; Assign(f,'TAMGIAC.OUT'); Rewrite(f); Writeln(f,'co tat ca ',deu1,' tam giac deu'); Writeln(f,'co tat ca ',can1,' tam giac can'); Writeln(f,'co tat ca ',vuong1,' tam giac vuong '); Close(f); End.