Używaj znaczników kodu.
Jak można prosto policzyć długość wektora n - wymiarowego? liczysz d(0,v) w metryce euklidesowej gdzie v to wektor n wymiarowe, a zero to też jak gdyby wektor n- wyamiarowy o wartościach 0,0,0..0
http://pl.wikipedia.org/wiki/Przestrze%C5%84_metryczna
czyli wynik d(0,v) = sqrt( (0-v1)2 + (0-v2)2 +.. +(0-vN)2) korzystamy z tego że (0-vI)2 dla I=1..N wynosi (-vI)2 a to z kolei jest (vI)2 dla I=1..n czyli cały wzór
d(0,v) = sqrt( (v1)2 + (v2)2 +.. +(vN)^2)
Tak dla formalności (v1)^2 = v1*v1.
Ten wzór łatwo wyprowadzić w inny sposób (z pitagorasa )
przekątna kwadratu(długość wektora w 2D) = sqrt(x2 + y2)
przekątna prostopadłościanu ( długość wektora w 3D ) = sqrt (x2 + y2 +z^2 ) łatwo zauwarzyc że każdy następny różni się dodaniem kolejnej współrzędnej do kwadratu :P
program as;
const
n = 3;
type
TWektor = array[0..n-1] of real; { pierwsza wsp. ma index 0, ostatnia n-1 }
var
v1,v2:twektor;
function w_length(var w:TWektor):real;
var suma:real;
i : integer;
begin
suma:=0; { zerujemy sumę }
for i:=0 to n-1 do
suma:=suma+w[i]*w[i]; { dodajemy kolejne współrzędne^2 do sumy)
{ tutaj mamy już sumękwadratów wszystkich współrzędnych => zwracamy pierwiastek }
w_length:=sqrt(suma);
end;
procedure w_dodaj(var a,b:twektor);
var i:integer;
begin
for i:=0 to n-1 do
a[i]:=a[i]+b[i]; { dodajemy odpowiednie współrzędne z b do a i zapamiętujemy w a}
end;
begin
v1[0]:=8;
v1[1]:=4;
v1[2]:=1;
v2[0]:=4;
v2[1]:=5;
v2[2]:=-10;
w_dodaj(v2,v1);
writeln(' len v1 = ', w_length(v1):10:5); { zdaje się powinno dać wynik 9 }
writeln(' v2[',v2[0]:5:3,', ',v2[1]:5:3,', ',v2[2]:5:3,']'); { wektor v2 po dodaniu v1 }
end.