esercizi di matematica con turbo pascal 1.1 su mac

program kramer3;
 (* regola pratica per determinante terzo ordine *)
 (* soluzione sistema a tre equazioni *)
 (* variante di kramer4 .. numeri reali o interi *)
 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:integer;
 
 procedure fine;
 begin
 exit;
 end;
 
 procedure impossibile;
 begin
 writeln('sistema impossibile');
 writeln('ds=',ds:4:3);
 writeln('dx=',dx:4:3);
 writeln('dy=',dy:4:3);
 writeln('dz=',dz:4:3);
 end;
 
 procedure indeterminato;
 begin
 writeln('sistema indeterminato o impossibile');
 writeln('ds=',ds:4:3);
 writeln('dx=',dx:4:3);
 writeln('dy=',dy:4:3);
 writeln('dz=',dz:4:3);
 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
 clearscreen;
 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 determinato else
 if (ds=0) and (dx=0) and (dy=0) and (dz=0)  then indeterminato else
 if (ds=0) and (dx<>0) or (dy<>0) or (dz<>0) then impossibile else;
 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
 clearscreen;
 calcola;
 end.