Vẽ và tính trong đa giác

Bookmark and Share
Program Da_giac;
Uses Crt,graph;
Const Max=20;
Type Dinh=Record
X:integer;
Y:integer;
End;
Var Diem:Array[1..Max] of Dinh;
N,i,j,h,k:Byte;
D,dt,total,t,p:Real;
A,b,c:Real;
Gd,gm:integer;
{+}
Procedure Ngat;
Begin
WRITELN('//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\');
End;
{-}

{+}
Procedure Nhap;
Begin
Clrscr;
Write(' - Xac dinh trong da giac co bao nhieu dinh: ');readln(n);
IF n<=2 then
Writeln(' Ban da nhap sai so luong dinh trong da giac! ') else
For i:=1 to n do
Begin
Writeln(' > Toa do dinh thu ',i,' la: ');
begin
Write(' * Toa do Hoanh X : ');readln(diem[i].x);
Write(' * Toa do Tung Y : ');readln(diem[i].y);
end;
End;
Writeln;
Ngat;
End;
{-}

{+}
Function Kc(x1,y1,x2,y2:LongInt):Real;
Begin
Kc:=sqrt(sqr(x1-x2)+sqr(y1-y2));
End;
{-}
{+}
Procedure KhoangCach;
Begin
For h:=1 to n-1 do
Begin
Write(' [] Khoang cach giua hai diem thu ',h,' va thu ',h+1,' la: ');
d:=kc(diem[h].x,diem[h].y,diem[h+1].x,diem[h+1].y);
Writeln(' ',d:8:2);
End;
Write(' [] Khoang cach giua hai diem thu ',n,' va thu 1 la: ');
Writeln(' ',kc(diem[n].x,diem[n].y,diem[1].x,diem[1].y):8:2);
Writeln;
Ngat;
End;
{-}

{+}
Procedure Chuvi;
Begin
T:=0.00;
For h:=1 to n-1 do
Begin
d:=kc(diem[h].x,diem[h].y,diem[h+1].x,diem[h+1].y);
T:=t+d;
End;
Writeln(' [] Chu vi da giac ',n,' dinh la: ',t+kc(diem[n].x,diem[n].y,diem[1].x,diem[1].y):8:2);
Writeln;
Ngat;
End;
{-}

{+}
Function S(x1,y1,x2,y2,x3,y3:byte):Real;
Begin
a:=kc(x1,y1,x2,y2);
b:=kc(x2,y2,x3,y3);
c:=kc(x3,y3,x1,y1);
p:=(a+b+c)/2;
S:=Sqrt(p*(p-a)*(p-b)*(p-c));
End;
{-}
{+}
Procedure Dientich;
Begin
Total:=0.00;
For i:=2 to n-1 do
Begin
Dt:= S(diem[1].x,diem[1].y,diem[i].x,diem[i].y,diem[i+1].x,diem[i+1].y);
Writeln(' [] Dien tich tam giac qua 3 diem [1]_[',i,']_[',i+1,'] la: ',dt:8:2);
Total:=Total+Dt;
End;
Writeln(' [] Dien tich da giac ',n,' dinh la: ',Total:8:2);
Writeln;
Ngat;
End;
{-}

{+}
Procedure Ve;
Begin
Gd:=Detect;
InitGraph(Gd, Gm, 'C:\BGI');
TextBackGround(Yellow);
SetColor(Green);
For i:=1 to n do
Line(diem[i].x,diem[i].y,diem[i+1].x,diem[i+1].y);
For i:=2 to n-1 do
Line(diem[1].x,diem[1].y,diem[i].x,diem[i].y);
Writeln;
Ngat;
End;
{-}

{+}
Procedure ToMauDaGiac;
Const Triangle:array[1..4] of PointType=
((x:50;y:100),(x:100;y:100),(x:150;y:150),(x:50;y: 100));
Begin
Ve;
If graphresult <> grOk then
Halt(3);
FillPoly(SizeOf(Triangle) div SizeOf(PointType), Triangle);
CloseGraph;
Writeln;
Ngat;
End;
{-}

{+}
Procedure Tinh;
Begin
KhoangCach;
Chuvi;
DienTich;
Readln;
End;
{-}

BEGIN
NHAP;
TINH;
VE;
Readln
END.
Photobucket