Witam. Prosiłbym o wytłumaczenie działania programu.
#include <iostream>
#include <cstdlib>
#include <fstream>
#define N 4
using namespace std;
int zapisz(int mat1[4][4])
{
fstream plik;
plik.open("plik.txt", ios::out | ios::app);
int i,j,k;
if(!plik.good())
{
cout << "Blad wczytywania pliku" << endl;
return 0;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
plik << mat1[i][j] << " ";
}
plik << endl;
}
plik << endl;
plik.close();
return 0;
}
void dop(int mat2[N][N], int temp1[N][N], int p, int q, int n)
{
int i=0,j=0,w,k;
for (w=0;w<n;w++)
{
for (k=0;k<n;k++)
{
if (w!=p && k!=q)
{
temp1[i][j++]=mat2[w][k];
if (j==n-1)
{
j=0;
i++;
}
}
}
}
}
int det(int mat1[N][N], int n)
{
if(n==1)
{
return mat1[0][0];
}
int temp[N][N];
int znak=1,d=0;
for(int f=0;f<n;f++)
{
dop(mat1,temp,0,f,n);
d+=znak*mat1[0][f]*det(temp,n-1);
znak=-znak;
}
return d;
}
int main()
{
int i,j,k,tab[16];
int mat[N][N];
for(tab[0]=1;tab[0]<=100;tab[0]++)
{
for(tab[1]=1;tab[1]<=100;tab[1]++)
{
for(tab[2]=1;tab[2]<=100;tab[2]++)
{
for(tab[3]=1;tab[3]<=100;tab[3]++)
{
for(tab[4]=1;tab[4]<=100;tab[4]++)
{
for(tab[5]=1;tab[5]<=100;tab[5]++)
{
for(tab[6]=1;tab[6]<=100;tab[6]++)
{
for(tab[7]=1;tab[7]<=100;tab[7]++)
{
for(tab[8]=1;tab[8]<=100;tab[8]++)
{
for(tab[9]=1;tab[9]<=100;tab[9]++)
{
for(tab[10]=1;tab[10]<=100;tab[10]++)
{
for(tab[11]=1;tab[11]<=100;tab[11]++)
{
for(tab[12]=1;tab[12]<=100;tab[12]++)
{
for(tab[13]=1;tab[13]<=100;tab[13]++)
{
for(tab[14]=1;tab[14]<=100;tab[14]++)
{
for(tab[15]=1;tab[15]<=100;tab[15]++)
{
mat[0][0]=tab[0];
mat[0][1]=tab[1];
mat[0][2]=tab[2];
mat[0][3]=tab[3];
mat[1][0]=tab[4];
mat[1][1]=tab[5];
mat[1][2]=tab[6];
mat[1][3]=tab[7];
mat[2][0]=tab[8];
mat[2][1]=tab[9];
mat[2][2]=tab[10];
mat[2][3]=tab[11];
mat[3][0]=tab[12];
mat[3][1]=tab[13];
mat[3][2]=tab[14];
mat[3][3]=tab[15];
if(det(mat,N)==1)
{
zapisz(mat);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return 0;
}