Валентина
4 год назад
Составить программу на Паскале двумя способами - через процедуру и функцию.Пятиугoльник зaдaн кoopдинaтaми cвoиx вepшин. Нaйти eгo плoщaдь.
ОТВЕТЫ
Ivanka
Oct 24, 2020
Используется формула Гаусса (формула "шнурования").
function SPolygonGauss(a:array of real):real;
// Возвращает вычисленную по формуле Гаусса площадь многоугольника,
// координаты вершин которого заданы массивами х и у
begin
var (n,i):=(a.Length-4,0);
Result:=0.0;
while i<=n do begin
Result+=a[i]*a[i+3]-a[i+1]*a[i+2];
i+=2
end;
Result:=Abs(0.5*Result)
end;
begin
var x:=ReadArrReal('Введите координаты вершин 5-угольника:',10);
SetLength(x,12);
x[10]:=x[0];
x[11]:=x[1];
Writeln('Площадь равна ',SPolygonGauss(x))
end.
Введите координаты вершин 5-угольника: 0.6 2.1 1.8 3.6 2.2 2.3 3.6 2.4 3.1 0.5
Площадь равна 3.915
procedure SPolygonGauss(a:array of real; var s:real);
// Вычисляет по формуле Гаусса площадь многоугольника,
// координаты вершин которого заданы массивами х и у
begin
var (n,i):=(a.Length-4,0);
s:=0.0;
while i<=n do begin
s+=a[i]*a[i+3]-a[i+1]*a[i+2];
i+=2
end;
s:=Abs(0.5*s)
end;
begin
var x:=ReadArrReal('Введите координаты вершин 5-угольника:',10);
SetLength(x,12);
x[10]:=x[0];
x[11]:=x[1];
var s:real;
SPolygonGauss(x,s);
Writeln('Площадь равна ',s)
end.
function SPolygonGauss(a:array of real):real;
// Возвращает вычисленную по формуле Гаусса площадь многоугольника,
// координаты вершин которого заданы массивами х и у
begin
var (n,i):=(a.Length-4,0);
Result:=0.0;
while i<=n do begin
Result+=a[i]*a[i+3]-a[i+1]*a[i+2];
i+=2
end;
Result:=Abs(0.5*Result)
end;
begin
var x:=ReadArrReal('Введите координаты вершин 5-угольника:',10);
SetLength(x,12);
x[10]:=x[0];
x[11]:=x[1];
Writeln('Площадь равна ',SPolygonGauss(x))
end.
Введите координаты вершин 5-угольника: 0.6 2.1 1.8 3.6 2.2 2.3 3.6 2.4 3.1 0.5
Площадь равна 3.915
procedure SPolygonGauss(a:array of real; var s:real);
// Вычисляет по формуле Гаусса площадь многоугольника,
// координаты вершин которого заданы массивами х и у
begin
var (n,i):=(a.Length-4,0);
s:=0.0;
while i<=n do begin
s+=a[i]*a[i+3]-a[i+1]*a[i+2];
i+=2
end;
s:=Abs(0.5*s)
end;
begin
var x:=ReadArrReal('Введите координаты вершин 5-угольника:',10);
SetLength(x,12);
x[10]:=x[0];
x[11]:=x[1];
var s:real;
SPolygonGauss(x,s);
Writeln('Площадь равна ',s)
end.
357
Смежные вопросы: