ho scritto la seguente funzione C per implementare l'algoritmo di eliminazione di Gauss. La variabile 'iterazione' sarà poi incrementata di 1 ad ogni passo, ma prima volevo testare il codice al passo iniziale. Il problema è che mi azzera solo gli elementi della prima colonna, le altre colonne rimangono invariate, e non capisco dove ho sbagliato. Potreste aiutarmi ?
- Codice:
void eliminazione_gauss ( tMatrice M, int m, int n, int iterazione)
{
int i, j,s;
tMatrice T;
for ( j = iterazione; j < n; j++ ) {
for ( i = iterazione; i < m; i++ ) {
if ( M[i][j] == 0 ) { s = i+1; }
else {
s = 0;
i = m;
j = n; } } }
printf ("\ns = %d", s);
printf ("\n");
printf ("%d %d %d\n", iterazione, m, n);
if ( M[iterazione][iterazione] == 0 ) {
for ( j = iterazione; j < n; j++ ) {
T[s][j] = M[s][j];
M[s][j] = M[0][j];
M[0][j] = T[s][j]; } }
else {
for ( i = iterazione+1; i < m; i++ ) {
for ( j = iterazione; j < n; j++ ) {
M[i][j] = M[i][j] - M[i][iterazione]*M[iterazione][j]/M[iterazione][iterazione]; } } }
for ( i=0; i<m; i++ ) {
for ( j=0; j<n; j++ ) {
printf ("%.2f\t", M[i][j] ); }
printf("\n"); }
}