Matrice con dimensione colonna contenente '>'

di Anonimizzato17589 il
9 risposte
Salve a tutti,
ho trovato una piccola funzione in C che data una matrice, ne toglie la riga 0 e la colonna ' i ' e in seguito la memorizza in un'altra matrice,

tutto ciò al fine di calcolare il determinante della matrice semplificata ( credo sia l'applicazione del teorema di Laplace.. ), tuttavia non mi è mai capitato di vedere la dimensione della colonna della matrice del tipo:

for(j=1;j<n;j++) {
for(l=0;l<n;l++) {
if(l!=i)
matridotta[j-1][l-(l>i)]=mat[j][l]; 
Ovvero con all'interno il segno di maggiore.
Qualcuno sa dirmi cosa potrebbe significare e quando si usa ?
Grazie in anticipo

9 Risposte

  • Prova ad usare la printf per vedere cosa visualizzi stampando l>i
  • Ho provato a fare il printf e praticamente mi stampa dei valori ( tanti quante sono le celle della matrice ) di cui i primi 3 sono zeri.
  • Non stampare tutta la matrice, bensì semplicemente il valore (l > i). Tale operazione restituisce un valore numerico che viene utilizzato nel tuo codice, stampandolo a video capirai come!
  • Mi stampa il valore 1 in ogni caso, quindi ho provato a sostituire (l>i) con il valore 1 poi però mi cambiano i valori della matrice e quindi il determinante, che non riporta.
  • Non sempre ... Avrai 1 se l>i oppure 0 in caso contrario
  • In pratica ti sposta a sinistra di una posizione tutte le colonne con indice > i, in modo tale da costruire la matrice senza la colonna i.

    Ciò è dovuto al fatto che in c se una condizione (ad esempio >) è vera viene restituito uno, mentre se è falsa viene restituito 0. Occhio che in altri linguaggi le cose sono ben diverse per cui questo trucchetto non funziona.

    ciao
  • Ok, anche se non capisco ancora bene a cosa serva, almeno ho le idee più chiare.
    Grazie mille !!
  • Se non hai capito non hai le idee chiare...
  • Grazie mille dvaosta, ora ho capito
Devi accedere o registrarti per scrivere nel forum
9 risposte