kramer-sarrus

esci algebraturbo.htm

soluzione sistemi lineari con krame-sarrus

 

program kramer5;
(* regola pratica per determinante terzo ordine *)
(* soluzione sistema a tre equazioni *)
(* variante di kramer3 .. numeri reali o interi *)

uses crt;
var a1,a2,a3,b1,b2,b3,c1,c2,c3,n1,n2,n3:real;
ds,dx,dy,dz,x,y,z:real;
s:string;
scelta,T:integer;

procedure fine;
begin
exit;
end;

procedure impossibile;
begin
writeln('sistema impossibile');
end;

procedure indeterminato;
begin
writeln('sistema indeterminato o impossibile');
writeln('premi enter');
readln;
end;

procedure determinato;
begin
writeln('sistema determinato:soluzioni=');
writeln('determinante sistema ds=',ds:4:3);
writeln('determinante incognita dx=',dx:4:3);
writeln('determinante incognita dy=',dy:4:3);
writeln('determinante incognita dz=',dz:4:3);
writeln('X = ',dx/ds:4:3);
writeln('Y = ',dy/ds:4:3);
writeln('Z = ',dz/ds:4:3);
writeln;
writeln('premi enter');
readln;
end;

procedure calcola;
begin
clrscr;
s:=' ';
writeln('calcolo determinante terzo ordine:regola di SARRUS ');
writeln('soluzione sistema con tre equazioni e tre incognite ');
writeln('scrivi i valori dei coefficienti e termini noti');
writeln('se valori con decimali usa punto decimale 5.3 ');
writeln('dopo ogni valore premere enter ');
writeln('prova con seguenti valori ');
writeln('1,2,3,4...2,4,6,8..3,6,9,12 indeterminato ');
writeln('2,1,2,1...-3,2,-2,2..12,-1,10,4 impossibile ');
writeln('1,2,3,4...7,3,9,8...2,1,6,3 determinato ');
writeln('------------------');
writeln('a1 b1 c1 n1');
writeln('a2 b2 c2 n2');
writeln('a3 b3 c3 n3');
writeln('-------------------');
write('a1=');readln(a1);
write('b1=');readln(b1);
write('c1=');readln(c1);
write('n1=');readln(n1);
write('a2=');readln(a2);
write('b2=');readln(b2);
write('c2=');readln(c2);
write('n2=');readln(n2);
write('a3=');readln(a3);
write('b3=');readln(b3);
write('c3=');readln(c3);
write('n3=');readln(n3);
writeln('--------------------');
writeln(a1:4:3,s,b1:4:3,s,c1:4:3,s,n1:4:3);
writeln(a2:4:3,s,b2:4:3,s,c2:4:3,s,n2:4:3);
writeln(a3:4:3,s,b3:4:3,s,c3:4:3,s,n3:4:3);
writeln;
ds:=a1*b2*c3+b1*c2*a3+c1*a2*b3-a3*b2*c1-b3*c2*a1-c3*a2*b1;
dx:=n1*b2*c3+b1*c2*n3+c1*n2*b3-n3*b2*c1-b3*c2*n1-c3*n2*b1;
dy:=a1*n2*c3+n1*c2*a3+c1*a2*n3-a3*n2*c1-n3*c2*a1-c3*a2*n1;
dz:=a1*b2*n3+b1*n2*a3+n1*a2*b3-a3*b2*n1-b3*n2*a1-n3*a2*b1;
if (ds<>0) then T:=1 else
if (ds=0) and (dx=0) and (dy=0) and (dz=0) then T:=2 else
if (ds=0) and (dx<>0) or (dy<>0) or (dz<>0) then T:=3 else;
case T of
1:determinato;
2:indeterminato;
3:impossibile;
end;
writeln('-----------------------------------');
writeln('premi 1 per altro calcolo');
writeln('premi 2 per finire');
write('scelta 1 o 2 ? ');readln(scelta);
case scelta of
1:calcola;
2:fine;
end;
end;

begin
clrscr;
calcola;
end.