Напишите функцию,вычисляющую длину отрезка по координатам его концов. С помощью этой функции напишите программу на Pascal ABC,вычисляющую периметр треугольника по координатам его вершин
Answers & Comments
srzontmp
//PascalABC.NET //Версия 3.3, сборка 1634 begin var f: (real,real,real,real)->real:=(x1,y1,x2,y2)->sqrt((x2-x1)**2+(y2-y1)**2); var (x1,y1):=ReadReal2('Введите координаты 1 вершины через пробел'); var (x2,y2):=ReadReal2('Введите координаты 2 вершины через пробел'); var (x3,y3):=ReadReal2('Введите координаты 3 вершины через пробел'); write('Периметр: ',f(x1,y1,x2,y2)+f(x2,y2,x3,y3)+f(x1,y1,x3,y3)); end.
Function leng(var x,y,x1,y1: real): real; begin leng:=sqrt(sqr(x-x1)+sqr(y-y1)); end;
// основная программа var x1,y1,x2,y2,x3,y3,p: real; begin write('координаты вершин x1 y1 x2 y2 x3 y3 через пробел: '); readln(x1,y1,x2,y2,x3,y3); if (leng(x2,y2,x1,y1) + leng(x3,y3,x2,y2) = leng(x3,y3,x1,y1)) or (leng(x2,y2,x1,y1) + leng(x3,y3,x1,y1) = leng(x3,y3,x2,y2)) or (leng(x3,y3,x2,y2) + leng(x3,y3,x1,y1) = leng(x2,y2,x1,y1)) then writeln('точки лежат на одной прямой') else begin p:=leng(x2,y2,x1,y1)+leng(x3,y3,x2,y2)+leng(x3,y3,x1,y1); writeln('периметр: ',p:7:3); end; end.
Answers & Comments
//Версия 3.3, сборка 1634
begin
var f: (real,real,real,real)->real:=(x1,y1,x2,y2)->sqrt((x2-x1)**2+(y2-y1)**2);
var (x1,y1):=ReadReal2('Введите координаты 1 вершины через пробел');
var (x2,y2):=ReadReal2('Введите координаты 2 вершины через пробел');
var (x3,y3):=ReadReal2('Введите координаты 3 вершины через пробел');
write('Периметр: ',f(x1,y1,x2,y2)+f(x2,y2,x3,y3)+f(x1,y1,x3,y3));
end.
Verified answer
Function leng(var x,y,x1,y1: real): real;begin
leng:=sqrt(sqr(x-x1)+sqr(y-y1));
end;
// основная программа
var x1,y1,x2,y2,x3,y3,p: real;
begin
write('координаты вершин x1 y1 x2 y2 x3 y3 через пробел: ');
readln(x1,y1,x2,y2,x3,y3);
if (leng(x2,y2,x1,y1) + leng(x3,y3,x2,y2) = leng(x3,y3,x1,y1)) or
(leng(x2,y2,x1,y1) + leng(x3,y3,x1,y1) = leng(x3,y3,x2,y2)) or
(leng(x3,y3,x2,y2) + leng(x3,y3,x1,y1) = leng(x2,y2,x1,y1)) then
writeln('точки лежат на одной прямой')
else
begin
p:=leng(x2,y2,x1,y1)+leng(x3,y3,x2,y2)+leng(x3,y3,x1,y1);
writeln('периметр: ',p:7:3);
end;
end.
координаты вершин x1 y1 x2 y2 x3 y3 через пробел: 3 4 7 2 6 5
периметр: 10.797
координаты вершин x1 y1 x2 y2 x3 y3 через пробел: 1 2 3 4 5 6
точки лежат на одной прямой