sistema lineare con turbo 1.1 su mac
PROGRAM equa5; (* sistema a due o tre equazioni con numeri reali *)
type matq=array[1..3,1..3] of real; var ds,dx,dy,dz:real; i,j,n:integer; h:string; S,Ax,Ay,Az:matq; a:array[1..3,1..4] of real;
function det(a:matq):real; begin det:=a[1,1]*a[2,2]*a[3,3]+a[2,1]*a[3,2]*a[1,3]+a[1,2]*a[2,3]*a[3,1]+ -a[1,3]*a[2,2]*a[3,1]-a[2,1]*a[1,2]*a[3,3]-a[3,2]*a[2,3]*a[1,1]; end;
procedure secondo; begin clearscreen; for i:=1 to 2 do begin writeln('scrivi valori coefficienti e termine noto della equazione n.',i); for j:=1 to 3 do begin write('dato ',i,',',j,'=');readln(a[i,j]); end; end;
ds:=a[1,1]*a[2,2]-a[2,1]*a[1,2]; dx:=a[1,3]*a[2,2]-a[2,3]*a[1,2]; dy:=a[1,1]*a[2,3]-a[2,1]*a[1,3];
clearscreen; if ds=0 then begin if (dx=0) or (dy=0) then begin writeln('sistema indeterminato') end else begin writeln('sistema impossibile'); end end else begin writeln('x=',dx/ds:8:2); writeln('y=',dy/ds:8:2); end; end;
procedure terzo; begin clearscreen; for i:=1 to 3 do begin writeln('scrivi valori coefficienti e termine noto della equazione n.',i); for j:=1 to 3 do begin write('dato ',i,',',j,'=');readln(a[i,j]); end; write('termine noto =');readln(a[i,4]); end; for i:=1 to 3 do begin for j:=1 to 3 do S[i,j]:=a[i,j]; end; for i:=1 to 3 do begin ax[i,1]:=a[i,4]; ax[i,2]:=a[i,2]; ax[i,3]:=a[i,3]; end;
for i:=1 to 3 do begin ay[i,1]:=a[i,1]; ay[i,2]:=a[i,4]; ay[i,3]:=a[i,3]; end; for i:=1 to 3 do begin az[i,1]:=a[i,1]; az[i,2]:=a[i,2]; az[i,3]:=a[i,4]; end;
ds:=det(S); dx:=det(Ax); dy:=det(ay); dz:=det(az); clearscreen; if ds=0 then begin if (dx=0) or (dy=0) or (dz=0) then begin writeln('sistema indeterminato') end else begin writeln('sistema impossibile'); end end else begin writeln('x=',dx/ds:8:2); writeln('y=',dy/ds:8:2); writeln('z=',dz/ds:8:2); end; end;
procedure azione; begin clearscreen; writeln('soluzione sistemi numerici interi a due,tre equazioni'); writeln; writeln('1...sistema a due equazioni'); writeln('2...sistema a tre equazioni'); writeln('0...fine operazione'); writeln('scelta ? ');readln(n); if n=1 then secondo; if n=2 then terzo; writeln('----------------------------------------------'); write('scrivi 1 per altro sistema;2 per finire ');readln(h); if h='1' then azione; end;
begin clearscreen;azione;clearscreen; end.