Cześć siedzę nad kodem już długo i nie potrafię w nim znaleźć błędu kod liczy wyznacznik macierzy 4x4, wszystko gra kiedy w pętli zaraz po obliczeniach dodam "cout", kiedy go wyrzucam wszystkie wyniki idą w łeb. Ktoś wie o co biega?
#include <iostream>
using namespace std;
/*
3 5 3 5
1 4 2 1
3 3 -3 1
-1 -4 1 1
*/
float wyznacznik(float TAB[][3])
{ int i,j,n,k=0,kk=2;
float sum,wyz=1;
for(n=0;n<3;n++)
{
for(wyz=1,i=0,j=k;i<3;i++)
{
wyz=TAB[i][j]*wyz;
if(j==2)j=0;
else{j++;}
}k++;
sum=sum+wyz;
}
for(n=0;n<3;n++)
{
for(wyz=1,i=2,j=kk;i>=0;i--)
{
wyz=TAB[i][j]*wyz;
if(j==2)j=0;
else{j++;}
}kk--;
sum=sum+(-wyz);
}
return sum;
}
int main()
{ int i,j,wiersz,kolumna,p,k;
float wynik=0;
const int n=4,m=4;
float A[n][m]={{3,5,3,5},{1,4,2,1},{3,3,-3,1},{-1,-4,1,1}};
float tablica2[3][3];
cout << "wzgledem ktorej kolumny obliczyc wyznacznik?:";
cin >> kolumna;
for(wiersz=0;wiersz<4;wiersz++)
{
for(i=0,k=0;i<3;i++,k++)
{
for(j=0,p=0;j<3;j++,p++)
{
if(k==wiersz)k++;
if(p==kolumna-1)p++;
tablica2[i][j]=A[k][p];
}
}
if((wiersz+1+kolumna)%2==0)
{
wynik = wynik + A[wiersz][kolumna-1]*wyznacznik(tablica2);
}
if((wiersz+1+kolumna)%2!=0)
{
wynik = wynik + (-1)*A[wiersz][kolumna-1]*wyznacznik(tablica2);
}
cout << wynik << " " << endl;
// kiedy wyrzucam tego couta to program zle liczy
}
return 0;
}