Na zadanie domowe dostałem zadanie napisania programu który ma liczyć:
długość podanych wektorów
iloczyn skalarny tych wektorów
iloczyn wektorowy
i kąt pomiędzy nimi.
Napisałem program który lźle liczy kąt i nie mam pojęcia jak to poprawić.. Oto mój program:
program wektor;
type
float = single;
var
x1,y1,z1, {współrzędne 1 wektora}
x2,y2,z2, {współrzędne 2 wektora}
dlug1,dlug2, {długość wektora 1 i 2}
ils, {iloczyn skalarny}
ilw1,ilw2,ilw3, {iloczyn wektorowy współrzędne}
kat, {kąt pomiędzy wektorami}
x: {wartość cosinusa kąta zawartego pomiędzy wektorami}
float;
function ArcCos(const x : float) : float;
begin
if abs(x) < 1 then
ArcCos := ArcTan(x/sqrt (1-sqr (x)))
else ArcCos := 3.4e38;
end;
begin {początek programu głównego}
writeln('Podaj współrzędne pierwszego wektora');
readln(x1,y1,z1);
writeln('Podaj współrzędne drugiego wektora');
readln(x2,y2,z2);
{obliczanie długości}
dlug1:= sqrt(sqr(x1) + sqr(y1) + sqr(z1));
dlug2:= sqrt(sqr(x2) + sqr(y2) + sqr(z2));
{obliczanie iloczynu skalarnego}
ils:= dlug1 * dlug2 * ((x1*x2 + y1*y2 + z1*z2)/(dlug1*dlug2));
{ obliczanie iloczynu wektorowego}
ilw1:= (y1 * z2) - (z1 * y2);
ilw2:= (z1 * x2) - (x1 * z2);
ilw3:= (x1 * y2) - (y1 * x2);
{obiczanie kąta pomiędzy wektorami}
x:=((x1*x2 + y1*y2 + z1*z2)/(dlug1*dlug2));
kat:=ArcCos(x);
{wyświetlanie wyników}
writeln;
writeln('--------------------------------------------------------------------------------');
writeln('| Długość wektora pierwszego wynosi: |',dlug1);
writeln('| Długość wektora drugiego wynosi: |',dlug2);
writeln('| Iloczyn skalarny tych wektorów wynosi: |',ils);
writeln('| Iloczynem wektorowym tych wektorów jest |');
writeln('| wektor o współrzędnych | x:',ilw1);
writeln('| | y:',ilw2);
writeln('| | z:',ilw3);
writeln('| Kąt pomiędzy wektorami wynosi: |',kat);
writeln('--------------------------------------------------------------------------------');
readln
end.
proszę o pomoc