Помощь - Поиск - Пользователи - Календарь
Полная версия: Площадь и периметр треугольнка!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
punkska
по 3 точкам найти площадь и периметр треугольника!

подскажите формулы для вычисления пл и периметра тр-ка по 3 точкам...

хотелось бы сделать чтоб после ввода координат в правом углу строился этот треугольник. Так вот, как масштабировать тркугольник так чтоб наилучшим образом смотрелся а экране...
хелп :molitva:
klem4
Все что тебе нужно знать для решения сомой задачи (без построения рисунка) :

2 точки:(X,Y) (X1,Y1)
По т.Пифагора
D=sqrt(sqr(X-X1)+sqr(Y-Y1))

где D - расстояние межуд точками.
volvo
Треугольник с медианами! (реализовано на Дельфи, правда, но перенести на Паскаль зная алгоритм труда не составит...) :yes:
punkska
program Laba1;
uses Crt;

type
coor=record
x,y:byte;
end;
Mas=array[1..3] of coor;
rastP=array[1..3] of real;
const
N=3;

procedure getCoor( var treyg:Mas; const n:integer );
var
i:integer;
begin
for i:=1 to n do
begin
writeln('point #',i);
write('X= ');
readln(treyg[i].x);
write('Y= ');
readln(treyg[i].y);
writeln('');
end;
end;

procedure getRast(var rast:rastP; var treyg:Mas);
begin
rast[1]:=sqrt( sqr(treyg[1].x-treyg[2].x) + sqr(treyg[1].y-treyg[2].y) );
rast[2]:=sqrt( sqr(treyg[3].x-treyg[2].x) + sqr(treyg[3].y-treyg[2].y) );
rast[3]:=sqrt( sqr(treyg[1].x-treyg[3].x) + sqr(treyg[1].y-treyg[3].y) );
end;

function findP(var rast:rastP):real;
begin
findP:=(rast[2]+rast[3]+rast[1]);
end;

function findS(var rast:rastP):real;
begin
findS:=sqrt(rast[1]+rast[2])/2;
end;

Var
treyg:mas;
rast:rastP;


begin
writeln('LABA 1');
getCoor(treyg,n);
getrast(rast,treyg);

writeln('nEPUMETP treyg: ',findP(rast):4:2);
writeln('n/\OWAgb POMbA: ',findS(rast):4:2);

writeln('THE END.');
readln;
end.


вот что я написал!!!
но 100% уверен что S я неверно определил! тк если взять 2 других вектора(стороны) результат другой...подскажите плз!

зы ВСЕХ С ПРАЗДНИКАМИ!!! СЧАСТЛИВОГО РОЖДЕСТВА
volvo
Вычисляем площадь треугольника по формуле Герона:
Function FindS(var rast: rastP): real;
var p: real;
begin
p := FindP(rast) / 2;
FindS := Sqrt(Abs(p*(p - rast[1])*(p - rast[2])*(p - rast[3])));
end;

Если длины сторон нашел правильно - должно работать...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.