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.