PDA

View Full Version : [C] Prodotti matrice x vettore


lor84
20-03-2008, 08:21
E' possibile in qualche modo effettuare il prodotto di una matrice per un vettore utilizzando la stessa funzione che calcola il prodotto tra due matrici?

lor84
20-03-2008, 08:36
mi spiego meglio...data la funzione:
int** Matrix_Product(int** A, int** B, int N, int P, int M)

è possibile utilizzare la stessa funzione essendo B un vettore (int *) o sono costretto a creare B come matrice (int **) di dimensione PX1?

yorkeiser
20-03-2008, 08:54
Certamente, un vettore può essere visto come un caso particolare di una matrice

lor84
20-03-2008, 08:58
però provando ad effettuare un casting di una matrice a vettore non è consentito.....dunque sono costretto a dichiarare il vettore come doppio puntatore e basta?

Albi89
20-03-2008, 09:30
però provando ad effettuare un casting di una matrice a vettore non è consentito.....dunque sono costretto a dichiarare il vettore come doppio puntatore e basta?

Scusami, forse non capisco, ma perchè una matrice dovrebbe essere un "doppio puntatore" (se ho capito bene intendi puntatore a puntatore)?
E' un semplice puntatore al primo elemento, il fatto che debba essere letta "come matrice", viene spiegato al compilatore dal doppio indice.

Dunque ti consiglio semplicemente di passare puntatore al primo elemento e riempimento di riga e colonna di matrice e vettore, and all will be fine :D

P.S. ovviamente nel caso del vettore il numero di righe passato sarà 1, ed ancora più ovviamente dovrai assicurarti che l'operazione di prodotto righe per colonne sia valida per gli argomenti passati!

yorkeiser
20-03-2008, 09:46
Nessuno ti vieta di dichiarare un vettore come int**, ma non vedo perchè piuttosto non dichiari anche le matrici come semplici puntatori ad interi. In questo caso, la formula per accedere all'elemento (i,j) di una matrice m*n è:

int *matrice;
matrice = (int*)malloc(m*n*sizeof(int));
[...]
int elemento_i_j=*(matrice+j*m+i);

lor84
20-03-2008, 10:39
ok, grazie!