Зададени са координатите x и y на n точки. Последователно съединени те образуват начупена линия, съставена от n-1 отсечки. Да се състави програма за намиране общата дължина на начупената линия.
program linia;
uses Math;
const
n = 3;
var
p: array[1..n,1..2] of integer;
i:integer;
l:real;
function pow(num, exponent:integer):real;
begin
pow := Exp( exponent * Ln(abs(num)) );
end;
function GetLength(x1, x2, y1, y2:integer):real;
begin
GetLength := sqrt(pow(x2-x1, 2) + pow(y2-y1, 2));
end;
begin
for i := 1 to n do
begin
Write('x', i, ' = ');
ReadLn(p[i][1]);
Write('y', i, ' = ');
ReadLn(p[i][2]);
end;
l := 0;
for i := 2 to n do
begin
l := l + GetLength(p[i][1], p[i-1][1], p[i][2], p[i-1][2]);
end;
WriteLn('Length is', l);
end.
За намирането на дължината на всяка отсечка използваме Питагоровата формула за хипотенуза. Тъй като в Pascal няма функция за повдигане на число на степен, дефинираме функцията pow(), която прави точно това.
Програмата се компилира под Free Pascal:
aquilax@think /d/p/z/03_linia> fpc 03_linia.pas Free Pascal Compiler version 2.4.0-2 [2010/03/06] for x86_64 Copyright (c) 1993-2009 by Florian Klaempfl Target OS: Linux for x86-64 Compiling 03_linia.pas Linking 03_linia 34 lines compiled, 0.1 sec aquilax@think /d/p/z/03_linia> ./03_linia x1 = 1 y1 = 2 x2 = 3 y2 = 4 x3 = 5 y3 = 6 Length is 5.65685424949238E+000
Няма коментари:
Публикуване на коментар