TYPE vecteur = array[1..3] of real;
VAR a,b,c,d,e,f,g,h,m1,m2 : vecteur;
k : real;
choix : integer;
PROCEDURE saisir(var v:vecteur);
Var i:integer;
Begin
for i:=l to 3 do
begin
write(i,'-ième composante');
readln(v[i]);
end;
writeln;
End;
PROCEDURE afficher(v:vecteur);
Var i : integer;
Begin
for i:1 to 3 do
writeln(i,'-ième composante : ',v[i]) ;
writeln;
End;
PROCEDURE externe(k:real ; v:vecteur ; var w:vecteur);
Var i : integer;
begin
for i:=l to 3 do w[i]:=k*v[i];
End;
PROCEDURE somme(u,v:vecteur ; var w:vecteur);
Var i : integer;
Begin
for i:1 to 3 do w[i]:=u[i]+v[i];
End;
PROCEDURE prodvect(u,v:vecteur ; var w:vecteur);
Begin
w[1]:=u[2]*v[3]-v[2]*u[3];
w[2]:=u[3]*v[1]-v[3]*u[1];
w[3]:=u[1]*v[2]-v[1]*u[2];
End;
FUNCTION scalaire(u,v:vecteur):real;
Begin
scalaire:=u[1]*v[1]+u[2]*v[2]+u[3]*v[3];
end;
FUNCTION modulecar(u:vecteur):real;
Begin
modulecar:=scalaire(u,u);
End:
FUNCTION mixte(u,v,w:vecteur):real;
Var x : vecteur;
Begin
prodvect(u,v,x);
mixte:=scalaire(x,w);
End;
BEGIN
repeat
writeln;
writeln('menu :');
writeln;
writeln('-1- vérification de la première formule');
writeln('-2- vérification de la deuxième formule');
writeln('-3- division vectorielle');
writeln('-0- sortie du programme');
writeln;
write(votre choix ? '); readln(choix);
case choix of
1: begin
writeln('Vecteur A :'); saisir(a);
writeln('Vecteur B :'); saisir(b);
writeln('Vecteur C :'); saisir(c);
writeln('A^(B^C) : ');
prodvect(b,c,e);
prodvect(a,e,m1);
afficher(m1);
writeln('(A.C)B-(A.B)C :');
externe(scalaire(a,c),b,e);
externe(-scalaire(a,b),c,f);
somme(e,f,m2);
afficher(m2);
write('appuyer sur la touche RETURN pour continuer');
readln;
end;
2: begin
writeln('Vecteur A :'); saisir(a);
writeln('Vecteur B :'); saisir(b);
writeln('Vecteur C :'); saisir(c);
writeln('Vecteur D :'); saisir(d);
writeln('(A,B,C)D :');
externe(mixte(a,b,c),d,m1);
afficher(m1);
writeln('(D,B,C)A+(D,C,A)B+(D,A,B)C :');
externe(mixte(d,b,c),a,e);
externe(mixte(d,c,a),b,f);
externe((mixte(d,a,b),c,g);
somme(e,f,h);
somme(h,g,m2);
afficher(m2);
write('appuyer sur la touche RETURN pour continuer');
readln;
end;
3: begin
writeln('résolution de A^X=B :');
writeln('Vecteur A :'); saisir(a);
writeln('Vecteur B :'); saisir(b);
writeln('Valeur du scalaire k ? ');
readln(k);
if (scalaire(a,b)<>0)
then writeln('pas de solution')
else begin
prodvect(a,b,e);
externe(-1/modulecar(a),e,f);
externe(k,a,g);
somme(f,g,h);
writeln('solution X associée à ',k,' : ');
afficher(h);
writeln('verification : '); writeln;
writeln('A^X : ');
prodvect(a,h,m1);
afficher(m1);
writeln('B : ');
afficher(b);
end;
write('appuyer sur RETURN pour continuer'); readln;
end;
end; (* du case *)
until choix=0;
END.