another dumb question - loop not working?

The following function finds the inverse of a matrix (actually its not complete at all):

Code:

`void Matrix::Inverse()`

{

float det;

det = this->Determinant();

if(det == 0)

{

cout << "The matrix does not have an inverse.";

return;

}

Matrix *identity = new Matrix(a,b); // creates nxn matrix

identity->Identity(); // make it an identity matrix

Matrix *temp = new Matrix(a,b);

temp = this; // so we don't change the original matrix

// forward elimination steps

for(x = 0; x < a; x++) // a is the number of rows

{

y = 0;

temp->elimination(((float)(temp->Array[x+1][y]/temp->Array[y][y])), (y+1), (x+2));

temp->showMatrix();

}

}

elimination is defined as:

Code:

`void Matrix::elimination(float multiple, int row1, int row2)`

{

// subtracts multiple*row1 from row2

float temp;

for(y = 0; y < b; y++)

{

temp = Array[row2-1][y] - (multiple*Array[row1-1][y]);

Array[row2-1][y] = temp;

}

}

Anyways, if I have the matrix A:

2 1 3

1 2 3

4 2 1

if I do A.Inverse() it SHOULD do this:

2 1 3

0 1.5 1.5

4 2 1

2 1 3

0 1.5 1.5

0 0 -5

But it only does ONE step - it should display a second matrix, even if it isn't right, shouldn't it?

here's rest of the code for reference:

http://dydx.no-ip.com:8080/matrix.cpp

http://dydx.no-ip.com:8080/matrix.h

Thanks!