Помощь - Поиск - Пользователи - Календарь
Полная версия: Площадь и периметр треугольнка!
Форум «Всё о Паскале» > 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;

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