SGK Tin Học 11 - Bài tập và thực hành 7

  • Bài tập và thực hành 7 trang 1
  • Bài tập và thực hành 7 trang 2
  • Bài tập và thực hành 7 trang 3
  • Bài tập và thực hành 7 trang 4
Bài tập và thực hành
Mục đích, yêu cầu
Nâng cao kĩ năng viết, sử dụng chương trình con;
Biết cách viết một chương trình có cấu trúc để giải một bài toán trên máy tính.
Nội dung
a) Tìm hiểu việc xây dựng các hàm và thủ tục thực hiện tính độ dài các cạnh, chu vi, diện tích, kiểm tra các tính chất đều, cân, vuông của tam giác được trình bày dưới đây.
Giả thiết tam giác được xác định bởi toạ độ của ba đỉnh. Ta sử dụng kiểu bản ghi để mô tả một tam giác: type Diem = record
X, y: real;
end;
Tamgiac = record
A, B, C: Diem;
end;
Ta xây dựng các thủ tục và hàm:
Thủ tục nhận dữ liệu vào là biến mô tả tam giác R và dữ liệu ra là độ dài của ba cạnh a, b, c:
procedure Daicanh(var R: Tamgiac; var a, b, c: real);
Hàm tính chu vi của tam giác R: function Chuvị(var R: Tamgiac); real;
Hàm tính diện tích của tam giác R:
function Dientich(var R: Tamgiac): real;
Thủ tục nhận đầu vào là biến mô tả tam giác R và đầu ra là tính chất của tam giác (Deu hay Can hay Vuong):
procedure Tinhchat (var R: Tamgiac; var Deu, Can, Vuong:boolean) ;
Thủ tục hiển thị toạ độ ba đỉnh tam giác lên màn hình:
procedure Hienthi(var R: Tamgiac);
Hàm tính khoảng cách giữa hai điểm p, Q:
function Kh_cach(P,Q: Diem): real;
b) Tìm hiểu chương trình nhập vào toạ độ ba đỉnh một tam giác và sử dụng các hàm, thủ tục được xây dựng dưới đây để khảo sát các tính chất của tam giác, uses crt;
const eps = 1.0E-6; type
Diem = record
X, y: real;
end;
Tamgiac = record
A, B, C: Diem;
end;
var T: Tamgiac;
Deu, Can, Vuong: boolean;
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;
procedure Daicanh(var R: Tamgiac; var a, b, c: real); begin
a:= Kh_cach(R.B, R.C); b:= Kh_cach(R.A, R.C); c:= Kh_cach(R.A, R.B);
end;
function ChuVifvar R: Tamgiac): real; var a, b> c: real;
begin
Daicanh(R, a, b, c);
ChuVi:= a + b + c;
end;
function Dientich(var R: Tamgiac): real; var a, b, c, p: real;
begin
Daicanh(R, a, b, c); p:= (a+b+c)/2;
Dientich:= sqrt(p*(p-a)*(p-b)*(p-c))
end;
procedure Hienthi(var R: tamgiac); begin
R.B.y:0:3, R.C.y:0:3, ' ) ' ) ;
writeln('Toa do 3 dinh cua tarn giac la: '); writeln (' - Dinh A(',R.A.X:0:3, ', R.A.y:0:3,')'); writeln (' - Dinh B(', R.B.X:0:3, ',
writeln (' - Dinh c(', R.c.X:0:3, ',
end;
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
else
if (abs (a-b)<eps) or (abs (a-c)<eps) or (abs(b-c)<eps) then Can:= true;
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;
end;
begin
writeln (' Nhap tain 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);
write.ln('======================================');
Hienthi(T);
writeln('Dien tich: ', Dientich(T) :9:3); writeln('Chu vi:	',Chuvi(T):9:3);
Tinhchat(T, Deu, Can, Vuong); writeln('Tam giac co tinh chat: *); if Deu then writeln(' la tam giac deu')
else if Can then writeln(' la tam giac can'); if Vuong then writeln (' la tam giac vuong'); readln;-
end.
Viết chương trình sử dụng các hàm và thủ tục xây dựng ở trên để giải bài toán:
Cho tệp dữ liệu TAMGIAC.DAT có cấu trúc như sau:
Dòng đầu tiên chứa số N-,
N dòng tiếp theo, mỗi dòng chứa sáu số thực XA, yẠ, XB, yB, xc, yc là toạ độ ba đỉnh A(xÂ, yÂ), B(xb, yB), C(xc, yc) của tam giác ABC.
Hãy nhập dữ liệu từ tệp đã cho và trong số N tam giác đó, đưa ra tệp TAMGIAC.OUT gồm ba dòng:
Dòng đầu tiên là số lượng tam giác đều;
Dòng thứ hai là số lượng tam giác cân (nhưng không là đều);
Dòng thứ ba là số lượng tam giác vuông.