Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Найти площадь выпуклого многоугольника, если даны координаты вершин многоугольника (http://www.tehnari.ru/f43/t50724/)

Drakaas 21.04.2011 00:33

Найти площадь выпуклого многоугольника, если даны координаты вершин многоугольника
 
найти площадь выпуклого многоугольника если даны координаты вершин многоугольника

Vladimir_S 21.04.2011 09:47

Цитата:

Сообщение от Drakaas (Сообщение 507675)
найти площадь выпуклого многоугольника если даны координаты вершин многоугольника

Вот так. В лучших традициях. Ни те "здрасьте", ни те "пжалста". Естественно, никаких намеков на язык программирования. Просто короткое распоряжение. Как говорится, "Слуги! Подайте барину пуги! Свиней загонять...". Ну-ну...

Drakaas 21.04.2011 10:23

Новенький
 
прости, я тут новенький)
я просто очень торопился и тороплюсь до сих пор!
думал вы мне поможете, а тут..

Vladimir_S 21.04.2011 12:28

Цитата:

Сообщение от Drakaas (Сообщение 507773)
прости, я тут новенький)
я просто очень торопился и тороплюсь до сих пор!
думал вы мне поможете, а тут..

Так и помогли бы, если бы хотя бы да язык программирования был бы по крайней мере указан. Но его как не было, так и нет. Высказать нам обиды важнее?

Drakaas 21.04.2011 17:16

Я вроде оставил в разделе Pascal
Собственно , нужно в паскале.
Мне нужно написать программу н-угольника( и к тому же нарисовать его).
Благодарен тому, кто мне поможет!

Vladimir_S 21.04.2011 21:24

Цитата:

Сообщение от Drakaas (Сообщение 507920)
Я вроде оставил в разделе Pascal
Собственно , нужно в паскале.
Мне нужно написать программу н-угольника( и к тому же нарисовать его).
Благодарен тому, кто мне поможет!

В раздел Pascal, как Вы его назвали, входит программирование не только на Паскале, но и в среде Delphi, существенно отличной от Паскаля, а также в среде Kylix, каковая есть та же Delphi, но под ОС Linux.
Господи, как же иногда с вами трудно - стараешься помочь, так в ответ на резонное предложение четко сформулировать задание с указанием языка и призыв соблюдать хотя бы начала элементарной вежливости получаешь огрызания, обиды, вставание в позу оскорбленной добродетели и всё такое прочее.
Ладно. Вот Вам Ваша программа. А уж графическую часть с рисованием многоугольника - соблаговолите сами. Вели бы себя по-человечески - я бы Вам и это сделал, а так - увольте.
Некоторые пояснения:
1. Вводится число вершин (N).
2. Вводятся координаты вершин - массивы X и Y.
3. Ищутся длины сторон - массив L.
4. Если фигура - треугольник, то ищется площадь по формуле Герона и на этом всё заканчивается, если же нет - то выполняются следующие пункты.
5. Находятся координаты произвольной точки, находящейся заведомо внутри многоугольника (Xp, Yp). В программе за таковую взята середина отрезка, соединяющего вершины 1 и 3.
6. Указанная точка соединяется отрезками со всеми вершинами. Находятся длины всех этих отрезков - массив C.
7. Суммируются площади всех треугольников, образованных парой смежных отрезков и стороной многоугольника между вершинами, на которые эти смежные отрезки опираются.
8. Выводится результат.
Код:

var
 N:Byte;
 X,Y,L,C:Array[1..255] of Real;
 Xp,Yp,S:Real;
 i:integer;

Function Geron(a,b,c:Real):Real;
var p:real;
begin
 p:=(a+b+c)/2;
 Geron:=SQRT(p*(p-a)*(p-b)*(p-c));
end;

BEGIN
 Write('N= ');
 ReadLn(N);
 WriteLn;
 For i:=1 to N do
  begin
  Write('X[',i,']= ');
  ReadLn(X[i]);
  Write('Y[',i,']= ');
  ReadLn(Y[i]);
  end;
 For i:=1 to N-1 do
  L[i]:=SQRT(SQR(X[i]-X[i+1])+SQR(Y[i]-Y[i+1]));
 L[N]:=SQRT(SQR(X[N]-X[1])+SQR(Y[N]-Y[1]));
 If N=3 then S:=Geron(L[1],L[2],L[3]) else
 begin
  Xp:=(X[1]+X[3])/2;
  Yp:=(Y[1]+Y[3])/2;
  S:=0;
  For i:=1 to N do
  C[i]:=SQRT(SQR(X[i]-Xp)+SQR(Y[i]-Yp));
  For i:=1 to N-1 do
  S:=S+Geron(C[i],L[i],C[i+1]);
  S:=S+Geron(C[N],L[N],C[1]);
 end;
 WriteLn;
 WriteLn('S= ',S:12:3);
 ReadLn;
END.


Gespo 16.12.2012 21:38

Здравствуйте, Владимир. Не могли бы вы мне помочь такого же рода заданием только на Delphi.

Gespo 16.12.2012 21:42

var A, B: Array of TPoint;
i: Integer;
n: Integer;
S, P: Real;
x0, y0: Integer;
begin

n :=Strtoint(Edit1.Text); // кол-во углов
S := 0;
P := 0;

x0 := ClientWidth div 2;
y0 := ClientHeight div 2;

SetLength(A, n);
SetLength(B, n);

// кординаты ..........возможно ли координаты сделать динамическими???
A[0].X := 0;
A[0].Y := 0;
A[1].X := 0;
A[1].Y := 3;
A[2].X := 1;
A[2].Y := 4;
A[3].X := 3;
A[3].Y := 0;
A[4].X := 2;
A[4].Y := -3;
A[5].X := 1;
A[5].Y := -5;

Vladimir_S 16.12.2012 22:24

Цитата:

Сообщение от Gespo (Сообщение 834570)
Здравствуйте, Владимир. Не могли бы вы мне помочь такого же рода заданием только на Delphi.

Здравствуйте, Gespo. К сожалению, нет - на Delphi много лет не писал, а потому всё, что знал, успел накрепко позабыть.


Часовой пояс GMT +4, время: 05:14.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.