Risoluzione di sistema con linguaggio C

KatieP
La consegna del mio professore prevede di dover scrivere una function di tipo 'int' per la risoluzione di un sistema con matrice A triangolare inferiore, tale che restituisca come valore di ritorno -1 se il sistema ammette soluzione oppure l'indice dell'elemento tale che A(i,i)= 0. La function ha però nella testata il vettore X delle soluzioni del sistema, che è specificato come argomento di output. Ma a me risulta che nella testata della function possano comparire solo argomenti di input, sbaglio? Anche perché, se così non fosse, da dove farei uscire il vettore soluzione? Non sarebbe poi a mio avviso necessario risolvere il sistema per sapere se è risolubile, mi basterebbe fare il controllo sugli elementi della diagonale. Dunque non mi spiego il vettore X come output. Qualcuno può aiutarmi a capire? Grazie mille

Risposte
kobeilprofeta
Ciao. Ho trovato qualcosa di simile qua.

vict85
Io penso che tu abbia un po' di confusione in testa.

Una cosa è il concetto astratto di funzione (pura), ovvero una mappa tra input e output, un'altra è un programma in codice macchina, che non è altro che una sequenza di istruzioni. Detto questo, un argomento di output è il fornire in input l'indirizzo nel quale si invieranno le informazioni (in C si tratta di un puntatore all'oggetto che vuoi modificare). E' un po' come quando dai l'email o il telefono a qualcuno da cui desideri essere contattato. Di per sé, in termini di codice C, il problema non si pone: ogni array è passato per riferimento.

In pratica suppongo che il tipo della funzione sia qualcosa come [inline]int(double[],int,double[])[/inline]. Sicuramente non è [inline]int[/inline], che non è un tipo di funzione. Nota che in C non puoi ritornare un array da una funzione (a meno di metterlo in una struttura[nota]Cosa che non ti consiglio di fare a meno di avere un array molto piccolo[/nota]).

KatieP
Scusami per i tecnicismi raffazzonati, sono alle prime armi, comunque grazie.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.