Salve, la seguente procedura dovrebbe cancellare da una matrice di interi il minimo elemento di ogni riga. Il vettore ind[] è un vettore ( precedentemente riempito ) che contiene per ogni "i" l'indice della colonna che contiene il minimo. Purtroppo l'effetto è quello di copiare l'elemento successivo al minimo di ogni singola riga in ogni cella della riga.
Per esempio, la riga di indice 0 è : 1 0 -7 3 quindi ind[0]= 2. La riga in questione anzichè diventare 1 0 3 diventa 3 3 3 . Vi posto il codice:
codice:int cancella(int mat[][30], int r, int c, int ind[30]) { int i, k; for(i=0;i<r;i=i+1) { if(ind[i]=(c-1)) { mat[i][ind[i]-1]=mat[i][ind[i]]; } else { for(k=(ind[i]+1);k<c;k=k+1) { mat[i][k-1]=mat[i][k]; } } } c=c-1; return c; }

Rispondi quotando