събота, 4 декември 2010 г.

Задача 3 - дължина на начупена линия

Задача 3 - Pascal

Зададени са координатите 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

Няма коментари:

Публикуване на коментар