Tak tady to je:
parametr a je obdélníková matice, tvořená čtvercovou maticí koeficientů a přidaný pravý sloupec jsou pravé strany.
Po proběhnutí výpočtu jsou kořeny v tom pravém sloupci.
void elmat (int n,real a[20][21])
{
int n1,i,j,k,ik,j1;
real p,c,s,f1,f2;
n1 = n--;
for (i=0,j=0;(j-n)<0;++i,++j,k=0)
for (k=0;(k+i-n)<=0;++k)
{
ik = i+k;
f1 = a[i][j]; f2 = a[ik][j];
if ((f1 * f2)!=0)
{
p = ((f1*f1) + (f2*f2));
p = sqrt ((double)p);
c = f1 / p; s = -f2 / p;
}
else
{
c = 1.0; s = 0.0;
}
for (j1=0;j1<=n1;++j1)
{
p = (c * a[i][j1]) - (a[ik][j1]);
a[ik][j1] = (s * a[i][j1]) + (c * a[ik][j1]);
a[i][j1] = p;
}
}
for (i=n;i>=0;--i)
{
a[i][n1] = a[i][n1] / a[i][i];
for (k=i-1;k>=0;--k)
{
a[k][n1] = a[k][n1] - (a[k][i] * a[i][n1]);
}
}
}
Změňte si typ real na něco jako double.