Подпрограмма

  • Автор темы Nonius
  • Дата начала
N

Nonius

Гость
#1
Не знаю как сделать

Язык программирования: Паскаль

Разработать программу расчёта периметра и площади пятиугольника заданного координатами своих вершин.
Использовать две подпрограммы-функции (Function).
Одна расчитывает длину отрезка по заданным координатам концов, а другая площадь треугольника по заданным координатам вершин(Формула герона).
 

nayke

Well-Known Member
04.08.2010
310
0
#2
Не знаю как сделать

Язык программирования: Паскаль

Разработать программу расчёта периметра и площади пятиугольника заданного координатами своих вершин.
Использовать две подпрограммы-функции (Function).
Одна расчитывает длину отрезка по заданным координатам концов, а другая площадь треугольника по заданным координатам вершин(Формула герона).
Код:
//Длина отрезка
Function Len(x1,x2,y1,y2:double):double;
begin
result:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;
//площадь треугольника
Function Square(a,b,c:double):double;
begin
p:=(a+b+c)/2;
s:=sqrt(abs(p*(p-a)*(p-b)*(p-c)));
end;
 

hosm

* so what *
18.05.2009
2 442
9
#3
nayke по 2-й замечание:
Одна расчитывает длину отрезка по заданным координатам концов, а другая площадь треугольника по заданным координатам вершин (Формула герона).
и что-то я сомневаюсь уже, что автор темы допилит сам, ведь задания элементарные...
+ результат не присваивается ф-ции Square

по 1й - вроде (насколько я помню) result появился только в делфи, а в паскале надо явно присваивать имени функции.
 

nayke

Well-Known Member
04.08.2010
310
0
#4
nayke по 2-й замечание:

и что-то я сомневаюсь уже, что автор темы допилит сам, ведь задания элементарные...
+ результат не присваивается ф-ции Square

по 1й - вроде (насколько я помню) result появился только в делфи, а в паскале надо явно присваивать имени функции.
ну да только в Delphi

поэтому соответственно для паскаль
Код:
//Длина отрезка
Function Len(x1,x2,y1,y2:real):real;
begin
Len:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;
//площадь треугольника
Function Square(a,b,c:real):real;
var d:real;
begin
p:=(a+b+c)/2;
Square:=sqrt(abs(p*(p-a)*(p-b)*(p-c)));
end;
Ну далее как говорится задачи автора допиливать или как.. это исключительно наброски..
 
N

Nonius

Гость
#5
Вот попробовал написать сам, проверьте пожалуйста

Код:
type
pType = record X, Y : real; end;

function Len(P1, P2 : pType) : Real;
begin
Len := Sqrt((P1.X - P2.X)*(P1.X - P2.X) + (P1.Y - P2.Y)*(P1.Y - P2.Y));
end;

function Pl(P1, P2, P3 : pType) : Real;
var
a, b, c, p : Real;
begin
a := Len(P1, P2);
b := Len(P2, P3);
c := Len(P1, P3);
p := (a + b + c) / 2;
Pl := Sqrt(p * (p - a) * (p - B ) * (p - c));
end;

var
P : array [1..5] of pType;
begin
Write('Введите через пробел координаты 1 точки: '); ReadLn(P[1].X, P[1].Y);
Write('Введите через пробел координаты 2 точки: '); ReadLn(P[2].X, P[2].Y);
Write('Введите через пробел координаты 3 точки: '); ReadLn(P[3].X, P[3].Y);
Write('Введите через пробел координаты 4 точки: '); ReadLn(P[4].X, P[4].Y);
Write('Введите через пробел координаты 5 точки: '); ReadLn(P[5].X, P[5].Y);

WriteLn('Площадь пятиугольника = ', Pl(P[1], P[2], P[3]) + Pl(P[1], P[3], P[4]) + Pl(P[1], P[4], P[5]):6:3);
end.