Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Подпрограмма (http://forum.oszone.net/showthread.php?t=194216)

Nonius 17-12-2010 10:16 1567859

Подпрограмма
 
Не знаю как сделать

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

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

lxa85 17-12-2010 11:00 1567890

Nonius, Прости конечно, но "Не знаю" это не ответ.
Что читал, смотрел для решения задачи?
Какие есть собственные мысли по данному вопросу?
Какая предполагаемая область знаний решает подобные задачи?
Какие требования предъявляются к точкам и их взаимному расположению?
Как по ним нарисовать правильный(требуемый) пятиугольник?
Как площадь многогранной фигуры связана с треугольниками? (Пути преобразования и пересчета?)
На всякий случай поясню. Сейчас разбираемся с понятиями и терминами. Код паскаля не в коем случае! не затрагивается!!

Nonius 17-12-2010 15:44 1568103

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

Код:

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 - 1));
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.


lxa85 17-12-2010 16:30 1568150

Цитата:

Цитата lxa85
Какие требования предъявляются к точкам и их взаимному расположению?
Как по ним нарисовать правильный(требуемый) пятиугольник?
Как площадь многогранной фигуры связана с треугольниками? (Пути преобразования и пересчета?) »

Пока ты не задашь ограничения на точки и их расположения, решение задачи будет осложнено.
Да, приведенный тобою алгоритм работает, но не во всех случаях. Т.е. не во всех возможных вариантах пятиугольника.
И на части тестов будет дан ложный ответ.
Код комментировать!!! При объявлении подписывать, какая переменная за что отвечает.


Время: 12:21.

Время: 12:21.
© OSzone.net 2001-