PDA

Visualizza la versione completa : [C] elementi matrice


ViolenceJack
11-05-2010, 22:46
Ciao raga prima di postare ho cercato alcuni problemi simili ma mi sono perso tra i millemila XD puntantori.

Comunque vi espongo il mio problema

ho una funzione che riceve in input un puntatore ad una matrice float n x m, vorrei contare le righe e le colonne ma non riesco ad uscirne illeso cerebralmente.

dato che in teoria dovrei avere 2 output (numero di righe e numero di colonne) dovrei creare 2 funzioni.

per esempio

ho una matrice float matrice[5][1];

e due funzioni:

int contarighe(float* m);
int contacolonne(float* m);

ho provato un po' di esperimenti con _msize(m)/sizeof(float) ma mi da 517700 :dhò:

E' possibile creare queste funzioni?

ViolenceJack
11-05-2010, 23:23
pensandoci un altro po' mi è venuto in mente che potrei scorrere gli elementi fino a trovare un elemento che non è valido cioè non float... è sempre possibile implementarlo?

shodan
11-05-2010, 23:30
Puoi considerare un valore arbitrario come sentinella, che però dev'essere assolutamente compreso nei limiti della matrice. Se la sfori, il comportamento è indefinito.
Per indefinito intendo che può funzionare o formattarti la macchina.
Se non puoi usare un valore sentinella, sei costretto a portarti in giro i limiti di matrice.

ViolenceJack
11-05-2010, 23:40
non ho ben capito cosa intendi per valore sentinella cmq io dovrei creare solo delle funzioni che un utente richiama dal suo "main"
la dimensione della matrice la sceglie l'utente non mi è dato saperla...
quindi presumo che il limite sentinella non posso utilizzarlo e cosa intendi per limite di matrice?

per float matrice[5][1] quali sono i limiti?

shodan
11-05-2010, 23:49
Come valore sentinella puoi decidere che (ad esempio) se trovi il valore -0.25 hai raggiunto il limite della matrice.


per float matrice[5][1] quali sono i limiti?


5 righe e 1 colonna.
Ma questo è un fondamentale del C e se non lo sapevi già, hai carenze sulle basi del linguaggio.

ViolenceJack
11-05-2010, 23:52
forse non mi sono spiegato bene in principio...

io aquisisco una matrice m x n di qualsiasi dimensione (che non conosco) voglio restituire numero di righe e numero di colonne

shodan
12-05-2010, 00:00
Non è possibile ricavare i limiti di una matrice dal suo puntatore. O ricevi i limiti o ti affidi a un valore sentinella obbligatoriamente compreso nei limiti.

ViolenceJack
12-05-2010, 00:04
però dal puntatore posso risalire alla dimensione in byte della matrice?

shodan
12-05-2010, 00:08
No. Un puntatore non ha nessuna informazione su cosa punta, a parte il tipo di dato.

Alex'87
12-05-2010, 00:09
Originariamente inviato da ViolenceJack
però dal puntatore posso risalire alla dimensione in byte della matrice? No, il puntatore contiene solo l'indirizzo del primo elemento. Sapendo però quanti elementi hai ti basta fare una semplice moltiplicazione...

Loading