View Full Version : [c++] Definizione di matrici
LetBloodline
28-09-2007, 14:33
Scusate il disturbo ma mi trovo a dover istanziare una matrice e nn ci riesco se devo usare delle variabili come grandezza
Posso per esempio scrivere
double tabella[10][10];
oppure
double (*tabella)[24] = new double[durata][24]
ma mi servirebbe inizializzare una tabella con una dimensione pari alla variabile durata e l'altra pari a un'altra variabile. Come posso fare?
ma mi servirebbe inizializzare una tabella con una dimensione pari alla variabile durata e l'altra pari a un'altra variabile. Come posso fare?Così dovrebbe funzionare:
double (*tabella)[m] = new double[durata][m];
'm' è ovviamente un altra variabile.
LetBloodline
28-09-2007, 15:34
mi dice che si aspetta una espressione costante se provo come mi hai detto. Non vuole la 'm' prima dell'uguale =/
mi dice che si aspetta una espressione costante se provo come mi hai detto. Non vuole la 'm' prima dell'uguale =/In effetti ho fatto una stupidata .... prima di postare l'ho provato con il g++ su Linux e me lo dava per buono. Poi ho provato adesso con VC++ e non va e ho riprovato con g++ specificando, stavolta, -pedantic e mi dà un warning: ISO C++ forbids variable-size array
Che dire .... non si può fare così.
LetBloodline
01-10-2007, 07:37
a parte una struttura non si può fare in altro modo? ç_ç
a parte una struttura non si può fare in altro modo? ç_çSì, facendolo come "un array di array", tramite puntatori.
double **matrice;
matrice = new double*[num_righe];
for (i = 0; i < num_righe; i++)
matrice[i] = new double[num_colonne];
A questo punto l'espressione matrice[r][c] rappresenta un double. Questa tecnica comunque non crea un array vero e proprio come inteso dal C/C++ ("un insieme di elementi contigui in memoria"). È basata su puntatori e non puoi ovviamente risalire alle dimensioni tramite 'matrice'.
se devi fare una matrice dinamica di, poniamo, m righe e n colonne puoi allocare un array unico di dimensioni m*n e poi per accedere al generico elemento della riga j e colonna i puoi fare:
matrice[m*j + n*i]
io ho sempre fatto così e anche all'uni l'hanno insegnato in questo modo, poi non so se è quello che serve a te :)
matrice[m*j + n*i]No, è matrice[j*n + i]
io ho sempre fatto così e anche all'uni l'hanno insegnato in questo modoAh beh..... :rolleyes:
ups ho scritto troppo veloce senza pensare e mi sono meritato la figuraccia :D
trallallero
02-10-2007, 14:44
se devi fare una matrice dinamica di, poniamo, m righe e n colonne puoi allocare un array unico di dimensioni m*n e poi per accedere al generico elemento della riga j e colonna i puoi fare:
matrice[m*j + n*i]
io ho sempre fatto così e anche all'uni l'hanno insegnato in questo modo, poi non so se è quello che serve a te :)
all´uni insegnano in questo (orrendo) modo ??? :eek:
della serie famolo strano :nono:
beh se hai presente come funziona la numerazione in una base qualsiasi (e se fai fisica è bene che tu lo sappia) allora è un metodo ottimo, veloce, intuitivo e non devi nemmeno impazzire a fare 2000 malloc e/o free!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.