Bài tập  /  Bài đang cần trả lời

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

1 Xem trả lời
Hỏi chi tiết
447
0
0
Nguyễn Thị Sen
07/04/2018 13:16:22

Bài tập và thực hành 7

1. 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.

2. 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 tọa độ 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 ChuVi(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:

procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);

   + Thủ tục hiển thị tọa độ ba đỉnh của 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 tọa độ ba đỉnh một tam giác và sử dụng 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 ChuVi(var 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 	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; 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) 	then Vuong:=true; end;              begin 	clrscr; 	writeln('Nhap 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('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. 

Kết quả:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

c) 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, Xb, Xc, Ya, Yb, Yc là tọa độ của ba đỉnh A, B, C 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 3 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 đều );

   + Dòng thứ ba là số lượng các tam giác vuông;

Trả lời:

   + Ta cần 2 biến kiểu tệp để tham chiếu đến 2 tệp 'TAMGIAC.DAT' và 'TAMGIAC.OUT' .

   + Đầu tiên ta đọc số N ở đầu tệp 'TAMGIAC.DAT' từ đó biết tiến hành đọc bấy nhiêu tam giác.

   + Sau đó dùng thủ tục Tinhchat để xác định tính chất của các tam giác. Rồi dùng các biến đếm để lưu số lượng các 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:array[1..1000] of Tamgiac;     Deu,Can,Vuong:boolean;     N,i:integer;     sdeu,scan,svuong:integer;     tin,tout:text; 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; 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) 	then Vuong:=true; end; begin 	assign(tin,'TAMGIAC.DAT'); 	reset(tin); 	assign(tout,'TAMGIAC.OUT'); 	rewrite(tout); 	sdeu:=0; 	scan:=0; 	svuong:=0; 	readln(tIN,N); 	for i:=1 to N do 		begin 			Deu:=false; 			Can:=false; 			Vuong:=false; 			readln(tin,T[i].A.x,T[i].A.y,T[i].B.x,T[i].B.y,T[i].C.x,T[i].C.y); 			Tinhchat(T[i],Deu,Can,Vuong); 			if Deu then 			sdeu:=sdeu+1 			else if Can 			then scan:=scan+1; 			if Vuong then 			svuong:=svuong+1; 		end; 	writeln(tout,'So luong cac tam giac deu la ',sdeu); 	writeln(tout,'So luong cac tam giac can ma khong deu la ',scan); 	write(tout,'So luong cac tam giac vuong la ',svuong); 	close(tin); 	close(tout); end. 

Kết quả:

Với dữ liệu file nguồn:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Kết quả nhận được ở file đích

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×