[ peromalosutra @ 27.11.2005. 21:12 ] @
Napravio sam program koji rjesava sistem od 3 jednacine sa 3 nepoznate i htio bih da ga proširim tako da može da radi sa praktično neograničenim brojem jednačina (npr. 1000 jednačina sa 1000 nepoznatih) i sve sam u programu tome podredio, ali ne znam kako da uradim funkciju RAZVIJ_DET (koja računa determinantu matrice), tako da može da radi sa matricama n*n, (n<maxint). Kod mene ova funkcija radi samo sa matricama 3*3 i to mi je jedina prepreka da u potpunosti završim program. Code: program SISTEM_JEDNACINA; Uses WinCrt; const jednacina=3; type MATRICA= array[0..jednacina,0..jednacina+1] of Real; var d:array[0..jednacina] of real; a,det:MATRICA; X:array[1..jednacina] of real; var i:integer; procedure UNOS; var i,j:integer; begin writeln (' UNESI JEDNACINU OBLIKA ax+by+cz=d '); for i:=1 to jednacina do begin writeln; writeln (i,') '); for j:=1 to jednacina+1 do begin write ('a[',i,',',j,']='); readln(a[i,j]); end; end; end; procedure DETERMINANTA (a:matrica; n:integer; var det:matrica); {pravi matricu za odredjivanje determinante, gdje je n=0 matrica sistema, n=1 matrica za 1. nepoznatu, n=2 za drugu, itd. } var i,j:integer; begin writeln (n,')-------------------------'); for i:=1 to jednacina do begin writeln; for j:=1 to jednacina do begin if j=n then det[i,j]:=a[i,jednacina+1] else det[i,j]:=a[i,j]; write (det[i,j]:3:2,' '); end; end; writeln; writeln; end; function RAZVIJ_DET (det:matrica):real; {funkcija koja odredjuje determinantu matrice} begin RAZVIJ_DET:=det[1,1]*det[2,2]*det[3,3]+det[2,1]*det[3,2]*det[1,3]+det[3,1]*det[1,2]*det[2,3] -det[3,1]*det[2,2]*det[1,3]-det[2,1]*det[3,3]*det[1,2]-det[1,1]*det[3,2]*det[2,3]; end; begin UNOS; writeln; for i:=0 to jednacina do begin DETERMINANTA (a,i,det); d[i]:=RAZVIJ_DET(det); writeln ('d[',i,']=',d[i]:3:2); end; if d[0]=0 then begin write ('> Greska, D=0'); exit; end; writeln; for i:=1 to jednacina do begin x[i]:=d[i]/d[0]; writeln ('x[',i,']=',x[i]:3:2); end; end. ps: Ovo je pitanje možda više za matematički podforum, ali sam ga zbog programerske prirode postavio ovdje. HVALA! |