int** minor(int **m, int size, int col)
{
int **min = new int* [size];
for (int i=0; i < size; i++)
min[i] = new int[size];
int k = 0;
for (int i=1; i < size + 1 ; i++)
for (int j=0; j < size +1; j++)
{
if (j == col)
continue;
k = j;
if (j>col)
k = j - 1;
min[i-1][k] = m[i][j];
}
return min;
}
int det(int **m, int size)
{
if (size == 1)
return m[0][0];
int d = 0;
for (int i=0; i<size; i++)
{
int** min = minor(m, size - 1, i);
print(min, size - 1);
d += pow(-1.0, static_cast<int>(i+2))*m[0][i]*det(min, size - 1);
for (int j=0; j<size - 1; j++)
delete [] min[j];
delete [] min;
}
return d;
}
Mam takie 2 funkcje liczące wyznacznik macierzy. Próbuje zrozumieć o co w nich dokładnie chodzi.
Dlaczego w funkcji minor w pierwszej petli wartość i=1 a w drugiej j=0? Zakładamy ze wykreślamy pierwszy wiersz i kolejny kolumny macierzy?