дан пятиугольник сос торонами a,b,c,d,e и диагоналями l,m, исходящих из одной вершины. Найти площадь птиугольника, использую функции.
Код проги
program func1;
uses crt;
var a,b,c,d,e,l,m:integer;
s,s1,s2,s3,p:real;
function plo_tr(x,y,z:real):real;
begin
p:=(x+y+z)/2;
plo_tr:=sqrt(p*(p-x)*(p-y)*(p-z));
end;
function plo(m,n,o:real):real;
begin
plo:=m+n+o;
end;
Begin
clrscr; textcolor(12);
writeln('vvedite 1 storonu');
readln(a);
writeln('vvedite 2 storonu');
readln(b);
writeln('vvedite 3 storonu');
readln(c);
writeln('vvedite 4 storonu');
readln(d);
writeln('vvedite 5 storonu');
readln(e);
textcolor(10);
writeln('vvedite diag 1');
readln(l);
writeln('vvedite diag 2');
readln(m);
s1:=plo_tr(a,e,l);
s2:=plo_tr(b,c,m);
s3:=plo_tr(d,m,l);
s:=plo(s1,s2,s3);
textcolor(15);
writeln('ploshad 5-ugolnika =',s:4:2);
readln;
End.
как задать условие принадлежности 2-х диагоналей пятиугольнику?
2 мая 2008 в 22:04
нет. это не верно даже для четырехугольника.
правильно это звучало бы так: "диагональ меньше суммы смежных сторон, на нее опирающихся".
уточнение к "условие на выпуклость пришлось придумать, так как иначе площадь не считается": площадь считается неоднозначно.
2 мая 2008 в 22:00
диагональ должна быть меньше суммы 2-х любых сторон?
2 мая 2008 в 21:03
условие на выпуклость пришлось придумать, так как иначе площадь не считается. советую нарисовать картинку и посмотреть на нее.
2 мая 2008 в 21:01
а как тогда выпуклость проверить?
2 мая 2008 в 20:00
ах да. забыл, что было дано
я попытался определить принадлежность диагоналей пятиугольнику
так вот, если есть условие на выпуклость пятиугольника (иначе площадь не вычисляется однозначно), то все диагонали пренадлежат пятиугольнику.
2 мая 2008 в 19:04
задача в приведенном виде не имеет однозначного решения – условие недостаточно.
для того, чтобы задача решалась однозначно, можно дополнить условие требованием выпуклости пятиугольника. тогда условие принадлежности диагоналей пятиугольнику окажется очень простым – обе вершины диагонали должны находиться с одной и той же стороны от каждой стороны (или же принадлежать этой стороне). ну а это легко узнать через скалярное произведение, которое может определяться как x1*x2+y1*y2 и как a*b*cos(fi), где (x1,y1) – вектор стороны, (x2,y2) – вектор диагонали, a = sqrt(x1*x1+y1*y1), b = sqrt(x2*x2+y2*y2), fi – угол между векторами стороны и диагонали
2 мая 2008 в 19:04
дак ни координаты ни углы не даны, только ввод сторон и 2-х диагоналей…