esercizi di matematica con turbo pascal 1.1 su mac
program kramer7; (* soluzione sistema a tre equazioni con kramer *) (* calcolo determinanti secondo Laplace *)
var n:array[1..3,1..4] of real; d:array[1..16] of real; s:string; scelta,T,a,b:integer; x,y,z:real;
procedure calcola; begin clearscreen; s:=' '; writeln('scrivi i coefficienti e termini noti del sistema'); writeln('se valori con decimali usa punto decimale 5.3 '); writeln('dopo ogni valore premere enter '); writeln('------------------'); writeln('a1 b1 c1 n1'); writeln('a2 b2 c2 n1'); writeln('a3 b3 c3 n1'); writeln; for a:=1 to 3 do begin writeln('------------------------'); for b:=1 to 4 do begin write('equazione: ',a,' termine n.',b,' = ');readln(n[a,b]); end; end; writeln; (* calcolo determinante del sistema *) d[2]:=n[2,2]*n[3,3]-n[3,2]*n[2,3]; d[3]:=-(n[2,1]*n[3,3]-n[3,1]*n[2,3]); d[4]:=n[2,1]*n[3,2]-n[3,1]*n[2,2]; d[1]:=n[1,1]*d[2]+n[1,2]*d[3]+n[1,3]*d[4];
(* calcolo determinante della incognita x *) d[5]:=n[2,2]*n[3,3]-n[3,2]*n[2,3]; d[6]:=-(n[2,4]*n[3,3]-n[3,4]*n[2,3]); d[7]:=n[2,4]*n[3,2]-n[3,4]*n[2,2]; d[8]:=n[1,4]*d[5]+n[1,2]*d[6]+n[1,3]*d[7];
(* calcolo determinante della incognita y *) d[9]:=n[2,4]*n[3,3]-n[3,4]*n[2,3]; d[10]:=-(n[2,1]*n[3,3]-n[3,1]*n[2,3]); d[11]:=n[2,1]*n[3,4]-n[3,1]*n[2,4]; d[12]:=n[1,1]*d[9]+n[1,4]*d[10]+n[1,3]*d[11];
(* calcolo determinante della incognita z *) d[13]:=n[2,2]*n[3,4]-n[3,2]*n[2,4]; d[14]:=-(n[2,1]*n[3,4]-n[3,1]*n[2,4]); d[15]:=(n[2,1]*n[3,2]-n[3,1]*n[2,2]); d[16]:=n[1,1]*d[13]+n[1,2]*d[14]+n[1,4]*d[15];
(* stampo risultato calcolo determinanti *) writeln('determinante sistema ',d[1]:4:3); writeln('determinante x ',d[8]:4:3); writeln('determinante y ',d[12]:4:3); writeln('determinante z ',d[16]:4:3);
(* discussione sistema *) if d[1]<>0 then begin writeln('sistema determinato con soluzioni:'); x:=d[8]/d[1]; y:=d[12]/d[1]; z:=d[16]/d[1]; writeln('X=',x:4:3); writeln('Y=',y:4:3); writeln('Z=',z:4:3); end else writeln('sistema indeterminato o impossibile');
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:exit; end; end;
begin clearscreen; calcola; end.