uses crt; var a,b,c:real; ketqua:string; function Nhap(ghichu:string):real; var ketqua:real; begin write(ghichu); readln(ketqua); Nhap:=ketqua; end; function Tamgiac(a,b,c:real):boolean; var ketqua:boolean; begin ketqua:=false; if (a+b>c) and (b+c>a) and (c+a>b) then ketqua:=true; Tamgiac:=ketqua; end; function TamgiacDeu(a,b,c:real):boolean; var ketqua:boolean; begin ketqua:=false; if (a=b) and (b=c) then ketqua:=true; TamgiacDeu:=ketqua; end; function TamgiacCan(a,b,c:real):boolean; var ketqua:boolean; begin ketqua:=false; if (a=b) or (b=c) or (c=a) then ketqua:=true; TamgiacCan:=ketqua; end; function TamgiacVuong(a,b,c:real):boolean; var ketqua:boolean; begin ketqua:=false; if (sqr(a)+sqr(b)=sqr(c)) or (sqr(b)+sqr(c)=sqr(a)) or (sqr(c)+sqr(a)=sqr(b)) then ketqua:=true; TamgiacVuong:=ketqua; end; function DangTamGiac(a,b,c:real):string; var ketqua:string; begin if Tamgiac(a,b,c) then begin if TamgiacDeu(a,b,c) then ketqua:='Day la tam giac deu!' else {Khong deu} begin if TamgiacCan(a,b,c) then begin if TamgiacVuong(a,b,c) then ketqua:='Day la tam giac Vuong Can!' else {Khong vuong} ketqua:='Day la tam giac Can!'; end else {Khong can} begin if TamgiacVuong(a,b,c) then ketqua:='Day la tam giac Vuong!' else {Khong vuong} ketqua:='Day la tam giac Thuong!'; end; end; end else ketqua:='Ba so nay khong phai la ba canh cua tam giac!'; DangTamGiac:=ketqua; end; procedure XuLy; begin repeat clrscr; writeln('Chuong trinh kiem tra dang cua tam giac!'); a:=Nhap('Nhap vao a: '); b:=Nhap('Nhap vao b: '); c:=Nhap('Nhap vao c: '); ketqua:=DangTamGiac(a,b,c); writeln(ketqua); writeln('Nhan esc de thoat!'); until(ord(readkey)=27); end; begin XuLy; end.
Sưu tầm của thầy Hoàng
Fri Dec 11, 2009 1:03 am
Thành Viên Danh Dự
hecator
Giới tính :
Join : 07/11/2009
Bài gửi : 513
Thú cưng .:
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
Sao lại rắc rối vậy, còn đây là bài của mình rất nhẹ nhàng và đơn giản đã test chương trình
Trích dẫn :
uses Crt; Var a, b, c, p, s : Real; Begin clrscr; Write( ' Nhap ba so a, b, c : ' ); Readln(a, b, c); If (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a) then Begin Writeln( ' Ba canh tren tao thanh mot tam giac '); if (a=b) and (b=c) then write( ' Day la tam giac deu. ' ); if (a=b) or (a=c) or (b=c) then write(' Day la tam giac can ' ); If (sqr(a)+sqr(b)=sqr(c)) or (sqr(b)+sqr(c)=sqr(a)) or (sqr(a)+sqr(c)=sqr(b)) then write(' Day la tam giac vuong ' ); End Else Write( ' Ba so nay khong tao thanh duoc mot tam giac. ' ); Readln; End.
chú ý khi nhap lieu a b c thì chỉ cần cách khoảng trống giữa các số thôi thôi vd : 6 8 7
Fri Dec 11, 2009 8:19 am
Thành Viên Chuẩn
—» Ñärµ «—
Join : 11/11/2009
Bài gửi : 47
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
ng ta làm đúng mà kiu rắc rối! nhìn kĩ đi, cách của pạn pị sai về giải thuật rùi kìa....
code dài hok có nghĩ là rắc rối. viết code như thầy thì sau này mới phát triển thành ct lớn đc......
Fri Dec 11, 2009 8:45 am
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
Thực ra bài của thầy khá hay... Chương trình chính chỉ có
Code:
begin XuLy; end.
Tiếp theo dùng thủ tục xử lý
Code:
procedure XuLy; begin repeat clrscr; writeln('Chuong trinh kiem tra dang cua tam giac!'); a:=Nhap('Nhap vao a: '); b:=Nhap('Nhap vao b: '); c:=Nhap('Nhap vao c: '); ketqua:=DangTamGiac(a,b,c); writeln(ketqua); writeln('Nhan esc de thoat!'); until(ord(readkey)=27); end;
Thực ra 2 cái trên có thể ghép lại thành 1 cũng được ..
Tiếp tục dùng hàm dangtamgiac
Code:
function DangTamGiac(a,b,c:real):string; var ketqua:string; begin if Tamgiac(a,b,c) then begin if TamgiacDeu(a,b,c) then ketqua:='Day la tam giac deu!' else {Khong deu} begin if TamgiacCan(a,b,c) then begin if TamgiacVuong(a,b,c) then ketqua:='Day la tam giac Vuong Can!' else {Khong vuong} ketqua:='Day la tam giac Can!'; end else {Khong can} begin if TamgiacVuong(a,b,c) then ketqua:='Day la tam giac Vuong!' else {Khong vuong} ketqua:='Day la tam giac Thuong!'; end; end; end else ketqua:='Ba so nay khong phai la ba canh cua tam giac!'; DangTamGiac:=ketqua; end;
Thực ra đây chính là thủ tục quan trong nhất của chương trình, kiểm tra xem thử đó là dạng tam giác gì.. Bắt đầu kiểm tra giá trị các cạnh bằng các chương trình con khác (dạng hàm) như tamgiacdeu, tamgiaccan,.... ( Kiểu Boolean True - False) Nếu nó ko phải tam giác đều, ko phải tam giác cân, vuông cân, tam giác thường ==> nó ko phải là tam giác
Bài của thầy tuy dài nhưng khá rõ ràng, dễ hiểu..có thể thấy nét khác biệt của việc sử dụng chương trình con rồi đó Chỉ có thủ tục "Xu ly", mình nghĩ nên đem nó ra làm chương trình chính luôn, ko cần rườm ra thêm thủ tục
----------------------------------------------------------- @Naru: xem lại đi, cách của Big cũng đúng rồi mà.... Có điều mình edit lại xíu phần nhập các số a,b,c và thiếu tam giác vuông cân
Code:
uses Crt; Var a, b, c, p, s : Real; Begin clrscr; repeat Write( ' Nhap ba so a, b, c : ' ); Readln(a, b, c); until (a>0) and (b>0) and (c>0);
If (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a) then Begin Writeln( ' Ba canh tren tao thanh mot tam giac '); if (a=b) and (b=c) then write( ' Day la tam giac deu. ' ); if (a=b) or (a=c) or (b=c) then write(' Day la tam giac can ' ); If (sqr(a)+sqr(b)=sqr(c)) or (sqr(b)+sqr(c)=sqr(a)) or (sqr(a)+sqr(c)=sqr(b)) then if (a=b) or (b=c) or (a=c) then write('Tam giac nay vuong can') else write('Day la tam giac vuong'); End Else Write( ' Ba so nay khong tao thanh duoc mot tam giac. ' ); Readln; End.
Fri Dec 11, 2009 10:53 am
Thành Viên Chuẩn
—» Ñärµ «—
Join : 11/11/2009
Bài gửi : 47
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
chán thiệt! sao tự nhiên tui lại đi pàn cãi zề mấy cái pài tạp nhạp này trơi! sr mây pạn nhé. ..... @regulus: test hết chưa mà nói thế hả? nhập tam giác có 3 cạnh pằng nhau đi.Kết quả sẽ là: tam giác đều tam giác cân .... suy nghĩ kĩ trc khi nói nhák.
Số lần được cảm ơn :Message reputation : 0% (1 vote)
Fri Dec 11, 2009 11:07 am
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
ax...Đó chỉ là lỗi sơ đẳng trình bày thôi... 1 tam giác đều cũng là 1 tam giác cân mà
Quên xét trường hợp đó
Chỉ cần thay đoạn Tam giác đều, tam giác cân = đoạn này là ok hết
Code:
if (a=b) or (b=c) or (a=c) then if (a=b) and (b=c) then write('Tam giac deu') else write('Tam giac can');
Fri Dec 11, 2009 11:37 am
Thành Viên Danh Dự
hecator
Giới tính :
Join : 07/11/2009
Bài gửi : 513
Thú cưng .:
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
@ Naru mình không hiểu sai về giải thuật là sao ? Chỉ rõ ra đi , test được rồi mà . Code mà có hàm con vô thì thầy dạy thì mình chưa hiểu rõ nên ứng dụng chưa được nên thấy nó rắc rối và rườm rà , ! Bạn Đừng nghĩ biết rùi thì lên mặt với người khác ,
Trích dẫn :
chán thiệt! sao tự nhiên tui lại đi pàn cãi zề mấy cái pài tạp nhạp này trơi!
" tạp nhạp" đối với bạn nhưng với một số người mới biết như mình là lớn đó @ regulus cảm ơn nhe ! Lỗi tam giác cân và tam giác đều hôm qua chưa nghĩ ra ! Ráp vô thấy được rồi ! Cái này chắc phải học hỏi thêm ông giúp giùm nha ! Chữ P, và s là ban đầu định xét định dạng t theo chu vi và diện tích nhưng thấy nó khá rắc rối nên mình bỏ rồi, ai ngờ dòng đầu chưa xoá hết SR mọi người nha!
Fri Dec 11, 2009 11:45 am
Thành Viên Chuẩn
—» Ñärµ «—
Join : 11/11/2009
Bài gửi : 47
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
hecator đã viết:
@ Naru mình không hiểu sai về giải thuật là sao ? Chỉ rõ ra đi , test được rồi mà . Code mà có hàm con vô thì thầy dạy thì mình chưa hiểu rõ nên ứng dụng chưa được nên thấy nó rắc rối và rườm rà , ! Bạn Đừng nghĩ biết rùi thì lên mặt với người khác ,
Trích dẫn :
chán thiệt! sao tự nhiên tui lại đi pàn cãi zề mấy cái pài tạp nhạp này trơi!
" tạp nhạp" đối với bạn nhưng với một số người mới biết như mình là lớn đó @ regulus cảm ơn nhe ! Lỗi tam giác cân và tam giác đều hôm qua chưa nghĩ ra ! Ráp vô thấy được rồi ! Cái này chắc phải học hỏi thêm ông giúp giùm nha ! Chữ P, và s là ban đầu định xét định dạng t theo chu vi và diện tích nhưng thấy nó khá rắc rối nên mình bỏ rồi, ai ngờ dòng đầu chưa xoá hết SR mọi người nha!
pó đao. khái niệm cơ pãn cũng hok cóa!hoy em thua mấy anh, sợ tự ái mấy anh nổi lên quá........
Số lần được cảm ơn :Message reputation : 0% (1 vote)
Sat Dec 12, 2009 3:02 pm
Ma Mới
nvcuongsp
Giới tính :
Đến từ : daklak
Join : 12/12/2009
Bài gửi : 4
HUMOR : Yêu là chính
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
đọc tới đây mà thấy chán rồi. diễn đàn gì mà cắn xé nhau không thế?
Sat Dec 12, 2009 6:42 pm
Thành Viên Xây Dựng
kim_o
Giới tính :
Đến từ : An Giang
Join : 12/11/2009
Bài gửi : 148
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
mệt mấy "pa pa" wa', không khiêm tốn hơn được chút hả???? giũa con và người khác nhau cũng chính là người có ý thức văn hóa đó các bạn,... Người ta cũng nói,"có tài mà không có đức là kẻ vô dụng, có đức mà không có tài thì không làm được việc gì cả"... hj vọng ITK35 chúng ta đều là người tài đức.
Sat Dec 12, 2009 6:54 pm
Ma Mới
nvcuongsp
Giới tính :
Đến từ : daklak
Join : 12/12/2009
Bài gửi : 4
HUMOR : Yêu là chính
Tiêu đề: Re: Bài tập về loại tam giác (Pascal)
Tôi thấy qua trình hoạt động của các bạn như sau: Post====> mổ xẻ=====>Chia Phần=====>Dành nhau =====>die HiHi. ki 1 này hôk được bàn luận mấy cái Pascal cũng buồn thật. sang kì 2 C++ rồi mình than gia bàn luận nhen