next up previous
Next: Pri funkcijah ločimo Up: Računanje determinante Previous: Zapis izraza (-1)i v

Koda

void prepisi(int matrika[max_vel][max_vel], int dimenzija,
             int iz_stolpec, int iz_vrstica,
             int nova_matrika[max_vel][max_vel])
{ int i;  /* vrstica */
  int j;  /* stolpec */
  int i_c;  /* ciljna vrstica */
  int j_c;  /* ciljni stolpec */

  for(i = 0, i_c = 0; i < dimenzija; i++) {
    if (i != iz_vrstica) {
      for(j = 0, j_c = 0; j < dimenzija; j++)
        if (j != iz_stolpec) {
          nova_matrika[i_c][j_c] = matrika[i][j];
          j_c++;
        } /* if */
      i_c++;
    } /* if */
  } /* for */
} /* prepisi */

/* ------------------------------------------------------------------- */

int determinanta(int dimenzija, int matrika[max_vel][max_vel])
{
  int rezultat;
  int i;                              /* vrstica */
  int zac_matrika[max_vel][max_vel];  /* zacasna matrika */

  if (dimenzija == 1)  return  matrika[0][0];
  else {
    rezultat = 0;
    for (i = 0; i < dimenzija; i++) {
      prepisi(matrika, dimenzija, 0, i, zac_matrika);
      if ((i + 0) % 2 == 0)
        rezultat+=
          matrika[i][0] * determinanta(dimenzija - 1, zac_matrika);
      else
        rezultat-=
          matrika[i][0] * determinanta(dimenzija - 1, zac_matrika);
    } /* for */
    return rezultat;
  } /* else */
} /* determinanta */
Celoten program je objavljen v novičkah.



Andrej Brodnik (Andy)
1999-03-29