Witam!
Mam za zadanie zrobić szablon macierzy z liczeniem wyznacznika i odwracaniem. Jak do tej pory, nie mogę sobie poradzić z tym pierwszym....
Mój kod:
template<class T>
class matrix
{
public:
vector< vector<T> > s;
int rows;
int cols;
}
A tutaj fragment odpowiedzialny za liczenie wyznacznika (znaleziony na necie i trochę przerobiony):
double deta(int n, vector< vector<T> >m1)
{
int k1;
vector< vector<T> >m2(rows, vector<T>(cols));
double det=0;
if (n==1)
{
return m1[0][0];
}
else
{
for (k1=0; k1<n; k1++)
{
minor(k1, n, m1, m2);
det = det + potega(k1) * m1[0][k1] * deta(n-1,m2);
}
}
return det;
}
void minor(int k1, int n, vector< vector<T> >(m1), vector< vector<T> >m2)
{
int u,v;
for(v=0; v<n-1; v++)
{
for(u=0; u<k1; u++)
{
m2[v][u] = m1[v+1][u];
}
for(u=k1+1; u<n; u++)
{
m2[v][u-1] = m1[v+1][u];
}
}
}
int potega(int k1)
{
if ((k1%2)==1) return -1;
else return 1;
}
Mój cel to aby działało, nie musi być to jakoś pięknie napisane ;).
Co jest źle?
Pozdrawiam, Ziem!