Используется формула Гаусса (формула "шнурования").
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
- с функцией:
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.
a: array [1..4] of string;
s: string := 'бвгджзйклмнпрстфхцчшщъь';
i, j: byte;
begin
for i := 1 to 4 do
readln(a[i]);
for i := 1 to 4 do
for j := 1 to length(a[i]) do
delete(s, pos(a[i][j], s), 1);
writeln();
writeln(s);
end.
>котики
>это
>несказанное
>добро
>вгжйлмпфхцчшщъь