Я вроде оставил в разделе 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.