esercizi di matematica con turbo pascal 1.1 su mac

 

program kramer6;
  (* regola pratica per determinante terzo ordine *)
  (* soluzione sistema a tre equazioni *)
  (* variante di kramer3 .. numeri reali o interi *)
  
  var n:array[1..3,1..4] of real;
      d:array[1..4] of real;
      x,y,z:real;
      s:string;
      scelta,T,a,b: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=',d[1]:4:3);
  writeln('determinante incognita dx=',d[2]:4:3);
  writeln('determinante incognita dy=',d[3]:4:3);
  writeln('determinante incognita dz=',d[4]:4:3);
  writeln('X = ',d[2]/d[1]:4:3);
  writeln('Y = ',d[3]/d[1]:4:3);
  writeln('Z = ',d[4]/d[1]: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;
  for a:=1 to 3 do
   begin
   writeln('------------------------');
   for b:=1 to 4 do
    begin
    write('equazione ',a,' valore n.',b,' = ');readln(n[a,b]);
    end;
    end;
    writeln;
  d[1]:=n[1,1]*n[2,2]*n[3,3]+n[1,2]*n[2,3]*n[3,1]+n[1,3]*n[2,1]*n[3,2]-
      n[3,1]*n[2,2]*n[1,3]-n[3,2]*n[2,3]*n[1,1]-n[3,3]*n[2,1]*n[1,2];
  d[2]:=n[1,4]*n[2,2]*n[3,3]+n[1,2]*n[2,3]*n[3,4]+n[1,3]*n[2,4]*n[3,2]-
      n[3,4]*n[2,2]*n[1,3]-n[3,2]*n[2,3]*n[1,4]-n[3,3]*n[2,4]*n[1,2];
  d[3]:=n[1,1]*n[2,4]*n[3,3]+n[1,4]*n[2,3]*n[3,4]+n[1,3]*n[2,4]*n[3,2]-
      n[3,1]*n[2,4]*n[1,3]-n[3,4]*n[2,4]*n[1,4]-n[3,4]*n[2,1]*n[1,4];
  d[4]:=n[1,1]*n[2,2]*n[3,4]+n[1,2]*n[2,4]*n[3,1]+n[1,4]*n[2,1]*n[3,2]-
      n[3,1]*n[2,2]*n[1,4]-n[3,2]*n[2,4]*n[1,1]-n[3,4]*n[2,1]*n[1,2];
  
  if (d[1]<>0) then T:=1 else
  if (d[1]=0) and (d[2]=0) and (d[3]=0) and (d[4]=0)  then T:=2 else
  if (d[1]=0) and (d[2]<>0) or (d[3]<>0) or (d[4]<>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
  clearscreen;
  calcola;
  end.