singlepost

Pascal – задача на функции: площадь 5-угольника << На главную или назад  

дан пятиугольник сос торонами 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-х диагоналей пятиугольнику?

32 ответов в теме “Pascal – задача на функции: площадь 5-угольника”

  1. 7
    Леонид Максимов ответил:

    нет. это не верно даже для четырехугольника.

    правильно это звучало бы так: "диагональ меньше суммы смежных сторон, на нее опирающихся".

    уточнение к "условие на выпуклость пришлось придумать, так как иначе площадь не считается": площадь считается неоднозначно.

  2. 6
    Сергей Владимирович ответил:

    диагональ должна быть меньше суммы 2-х любых сторон?

  3. 5
    Леонид Максимов ответил:

    условие на выпуклость пришлось придумать, так как иначе площадь не считается. советую нарисовать картинку и посмотреть на нее.

  4. 4
    Сергей Владимирович ответил:

    а как тогда выпуклость проверить?

  5. 3
    Леонид Максимов ответил:

    ах да. забыл, что было дано :)
    я попытался определить принадлежность диагоналей пятиугольнику

    так вот, если есть условие на выпуклость пятиугольника (иначе площадь не вычисляется однозначно), то все диагонали пренадлежат пятиугольнику.

  6. 2
    Леонид Максимов ответил:

    задача в приведенном виде не имеет однозначного решения – условие недостаточно.

    для того, чтобы задача решалась однозначно, можно дополнить условие требованием выпуклости пятиугольника. тогда условие принадлежности диагоналей пятиугольнику окажется очень простым – обе вершины диагонали должны находиться с одной и той же стороны от каждой стороны (или же принадлежать этой стороне). ну а это легко узнать через скалярное произведение, которое может определяться как 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 – угол между векторами стороны и диагонали

  7. 1
    Сергей Владимирович ответил:

    дак ни координаты ни углы не даны, только ввод сторон и 2-х диагоналей…

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.