Разработать программу расчета периметра и площади пятиугольника заданного координатами своих вершин. Использовать две подпрограммы-функции. Одна рассчитывает длину отрезка по заданным координатам концов, а другая площадь треугольника по заданным координатам вершин (формула Герона). Предусмотреть проверочные примеры.
TarasBer
8.12.2011 20:14
> площадь треугольника по заданным координатам вершин (формула Герона)
Лооол, какой дурак считает площадь по координатам через формулу Герона? Вам гланды выравать через задницу не заставляют в качестве домашнего задания?
sqrt(|A|2*|B|2-<A,B>2) - это формула площади для многомерного случая. Для двумерного - тупо <A,tr(B)>
Catherinektz
9.12.2011 12:44
У меня есть решение этой задачи, но что-то работает не так. И это не домашняя работа, а контрольная!!! Program PP21_KEA; Const N=5; Var P,S,St1,St2,St3,Streyg:Real; X,Y: Array [1..N] Of Real; I,K: Byte; Function DL(x1,y1,x2,y2:Real):Real; Begin DL:=SQRT((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); End; Function PL(P,A,B,C:Real):Real; Begin P:=P/2; PL:=SQRT(P*(P-A)*(P-B)*(P-C)); End; Begin For I:=1 To N Do Begin Write('X[',I,']='); ReadLn(X[I]); Write('Y[',I,']='); ReadLn(Y[I]); End; K:=1; For I:=1 To N Do Begin K:=I+1; If K=6 Then K:=1; P:=P+DL(X[I],Y[I],X[K],Y[K]); End; WriteLn('P=',P:6:2); S:=0; For I:=1 To N-2 Do Begin St1:=DL(X[1],Y[I],X[I+1],Y[I+1]); St2:=DL(X[I+1],Y[I+1],X[I+2],Y[I+2]); St3:=DL(X[1],Y[I],X[I+2],Y[I+2]); P:=St1+St2+St3; STreyg:=PL(P,St1,St2,St3); S:=S+STreyg; End;
WriteLn('S=',S:6:2); ReadLn; End.
TarasBer
9.12.2011 13:14
Используй тег [ code=pas ], а то мне ничего не понятно в таком форматировании.
А считать площадь треугольника по координатам по формуле Герона - это надо сильно обмазаться героином, извините за каламбур, потому что в данном случае это идиотский способ.
Catherinektz
12.12.2011 12:56
Вот у меня есть две функции, а что дальше делать не знаю!ПОМОГИТЕ!!!
Function DL(x1,y1,x2,y2:Real):Real; Begin DL:=SQRT((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); End; Function PL(P,A,B,C:Real):Real; Begin P:=P/2; PL:=SQRT(P*(P-A)*(P-B)*(P-C)); End;
TarasBer
12.12.2011 13:38
Мы не можем помочь, потому что разговариваем с ботом, который ваще не читает то, что мы пишем.
Catherinektz
13.12.2011 0:43
Я читаю, что вы пишите, но не понимаю, и от задания не могу отойти ни влево, ни вправо, иначе расстрел!!!
TarasBer
13.12.2011 13:24
Я ещё раз повторяю: выложите код в нормальном виде, то есть внутри тега code=pas, потому что иначе я ничего не пойму.
А ещё тут опечатка: > St1:=DL(X[ 1 ],Y[ I ],X[I+1],Y[I+1]);
А сказать преподу, что предлагаемый способ - лажа, стесняться не надо.
Catherinektz
2.01.2012 0:27
Program PP21_KEA; Const N=5; Var P,S,St1,St2,St3,Streyg:Real; X,Y: Array [1..N] Of Real; I,K: Byte; Function DL(x1,y1,x2,y2:Real):Real; Begin DL:=SQRT((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); End; Function PL(P,A,B,C:Real):Real; Begin P:=P/2; PL:=SQRT(P*(P-A)*(P-B)*(P-C)); End; Begin For I:=1 To N Do Begin Write('X[',I,']='); ReadLn(X[I]); Write('Y[',I,']='); ReadLn(Y[I]); End; K:=1; For I:=1 To N Do Begin K:=I+1; If K=6 Then K:=1; P:=P+DL(X[I],Y[I],X[K],Y[K]); End; WriteLn('P=',P:6:2); S:=0; For I:=1 To N Do Begin St1:=DL(X[1],Y[1],X[I+1],Y[I+1]); St2:=DL(X[I+1],Y[I+1],X[I+2],Y[I+2]); St3:=DL(X[1],Y[1],X[I+2],Y[I+2]); P:=St1+St2+St3; STreyg:=PL(P,St1,St2,St3); S:=S+STreyg; End; WriteLn('S=',S:6:2); ReadLn; End.
Вот вся задача!!!Я защитила на "5".
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.