Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2010, 19:00   #1
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
Сообщение [PASCAL]Определение площади пятиугольника по координатам 5 точек

Здравствуйте Форумчане.
Возникла такая задача на паскале:
есть пятиугольник ABCDE, точки задаются координатами с клавы.
задача в том, чтобы найти площадь этого пятиугольника, методом разбиения на треугольники.
Предполагаю, что
площадь отдельного треугольника вычисляется по формуле герона:
Код:
Procedure Pl(PLOSHAD,a,b,c:real);
var
p:real;
begin
p:=(a+b+c)/2;
PLOSHAD:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
А длины отрезков через теорему Пифагора:
Код:
procedure dlina(A,Xa,Xb,Ya,Yb:real)
begin
A:=sqrt(sqr(Xb-Xa)+sqr(Yb-Ya));
end;
так же предполагаю что координаты лучше задавать через массивы(чтобы его можно было ранжировать)
а вот коим образом мне построить программу, которая с помощью этих двух процедур посчитает мне площадь всего пятиугольника, вне зависимости от того, в каком порядке заданы вершины - ума не приложу!
буду благодарен даже за алгоритм.
Очень прошу помочь
)Игнат( вне форума Ответить с цитированием
Старый 10.10.2010, 19:20   #2
q_proger
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 48
По умолчанию

Можно конечно считать и по формуле Герона, но это лишняя сложность сразу с нескольких точек зрения.
Есть простая формула для вычисления площади любого многоугольника, как раз через суммарную площадь составляющих его треугольничков, площадь которых считается как векторное произведение его сторон по их координатам.
Изображения
Тип файла: bmp Безымянный__.bmp (66.7 Кб, 154 просмотров)
q_proger вне форума Ответить с цитированием
Старый 10.10.2010, 19:32   #3
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Спасибо за формулу, теперь возникает такой нескромный вопрос:
коим образом мне использовать формулу?
считать ей площадь отдельных треугольников, или просто прогнать цикл, считающий эту сумму тупо для всех точек?
что я имею ввиду под последним:
точки
A(x1,y1)
B(x2,y2)
C(x3,y3)
D(x4,y4)
E(x5,y5)
Код:
a:=0;
For i:=1 to 5 do
a:=a+(x[i]*y[i+1]-x[i+1]*y[i]);
a:=a/2;
)Игнат( вне форума Ответить с цитированием
Старый 10.10.2010, 20:22   #4
q_proger
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 48
По умолчанию

Компилятора у меня нет, т. к. не работаю в паскале, так что пишу в слепую, если что может накосячил.. но наверное как-то так должно выглядеть:

Код:
var
    x, y : array [1 .. 5] of integer;
    s, i: integer;

begin
    // надо чем-то заполнить x и y
   
    s := (x[5]*y[1]-x[1]*y[5]);;
    for i := 1 to 4 do begin
        s := s + (x[i]*y[i+1]-x[i+1]*y[i]);
    end;
    
    write('площадь = ', abs(s) / 2);
end.
q_proger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление площади пятиугольника по координатам Fantom.as Общие вопросы C/C++ 1 13.10.2010 01:11
Вычисление площади пятиугольника по координатам Fantom.as C++ Builder 3 10.10.2010 11:45
Нахождение площади пятиугольника в Visual C++ 2010 Fantom.as Помощь студентам 0 06.10.2010 20:34
Определение геометрических фигур по координатам (Java) Darkwinter Помощь студентам 9 10.12.2009 13:29
Определение площади многоугольника Bayazet Помощь студентам 5 17.02.2009 12:48