[ hafyy @ 08.05.2008. 10:18 ] @
imam problem kako postaviti formulu za izracunavanje inverzne matrice....i da li je ovo ispravno kako sam krenuo ili trebam nesto ispraviti...
Code:

include<iostream.h>
include<conio.h>
int main (){
int niz[5][5];
for(int i=0;i<5;i++);{
for(int j=0;j<5;j++);{
cin>>niz[i][j];
}
}
for(int j=0;j<5;j++);{
for(int i=0;i<5;i++);{
cout<<niz[i][j];


EDIT: X Files :
Za pocetak, imas problem da postavis zadatak u ispravnom forumu i da koristis tagove za kod: [code] kod [/code], i da 'nazubis' kod.

[Ovu poruku je menjao X Files dana 08.05.2008. u 11:31 GMT+1]
[ X Files @ 08.05.2008. 10:31 ] @
Tačka-zarez ne ida iza for().
Nedostaju ti neke zatvorene zagrade (Nazubi malo kod, lakse ces pratiti sta pises (prepisujes))
Ispred include ide #
conio.h nije standardna biblioreka i ovde ti nije potrebna.

Code:

#include <iostream.h>
#include <conio.h>
int main ()
{
   int niz[5][5];
   for(int i=0;i<5;i++)
   {
      for(int j=0;j<5;j++)
      {
         cin>>niz[i][j];
      }
   }  

   for(int j=0;j<5;j++)
   {
      for(int i=0;i<5;i++)
      {
         cout<<niz[i][j];
      }
   }
}


[ xeron @ 10.05.2008. 17:19 ] @
Matrica je deklarisana kao vector vectora. Potrebne biblioteke #include <vector>, include <algorithm> (za swap funkciju).
Koristena je motoda Gauss - Jordanove eliminacije http://en.wikipedia.org/wiki/Gauss-Jordan_elimination

Code:

//Inverzna matrica Gauss - Jordanovom eliminacijom 
void gaussj(std::vector<std::vector <double> > &rezultat)
{
  int i,icol,irow,j,k,l,ll,n=brojRedovaMatrice(a);
  double big,dum,pivinv;
  std::vector <int> indxc(n),indxr(n),ipiv(n); 
  for (j=0;j<n;j++) ipiv[j]=0;
  for (i=0;i<n;i++) { 
      big=0.0;
      for (j=0;j<n;j++)                   //Vanjska petlja: pretraga za pivot
          if (ipiv[j] != 1)               //elementom.
              for (k=0;k<n;k++) {
                  if (ipiv[k] == 0) {
                      if (abs(rezultat[j][k]) >= big) {
                          big=abs(rezultat[j][k]);
                          irow=j;
                          icol=k;
                      }
                  }
              }
      ++(ipiv[icol]);
     if (irow != icol) {
         for (l=0;l<n;l++) std::swap(rezultat[irow][l],rezultat[icol][l]);
    }
    indxr[i]=irow;                 //Dijeljenje pivod reda
                                       //sa pivot elementom, koji se nalazi na irow i icol.
    indxc[i]=icol;
    if (rezultat[icol][icol] == 0.0) throw("Matrica je singularna !");

    pivinv=1.0/rezultat[icol][icol];
    rezultat[icol][icol]=1.0;
    for (l=0;l<n;l++) rezultat[icol][l] *= pivinv;

    for (ll=0;ll<n;ll++)            //reduciranje redova
        if (ll != icol) {           //osim onog kojeg sa kojim smo radili pivot
            dum=rezultat[ll][icol];
            rezultat[ll][icol]=0.0;
            for (l=0;l<n;l++) rezultat[ll][l] -= rezultat[icol][l]*dum;
        }
    }
    for (l=n-1;l>=0;l--) {
        if (indxr[l] != indxc[l])
            for (k=0;k<n;k++)
                std::swap(rezultat[k][indxr[l]],rezultat[k][indxc[l]]);
    }                                  // ...Kraj !
}