View Full Version : [C++] problema: array bidimensionali
andreaposse
24-08-2010, 13:36
Salve a tutti. Ho bisogno di creare una matrice 5 x 5 in c++ però ci sono dei problemi :
int a[5*5];
//inizializzazione
for(int i=0;i<5;i++)
for(int y=0;y<5;y++)
a[i*y]=0;
------------
a questo punto se io cerco di dare un valore alla riga 3 e colonna 2: es
a[3*2]=4;
la matrice appare così:
0 0 0 0 0
0 0 0 0 0
0 0 0 4 0
0 0 4 0 0
0 0 0 0 0
Come mai vengono inizializzati due valori della matrice anziche uno?
Grazie per l'aiuto. Andrea
GioVesas
24-08-2010, 13:51
Perche' non definisci semplicemente
int a[5][5]; ??
e codifichi di conseguenza?
andreaposse
25-08-2010, 10:53
Grazie mille per l'aiuto.
Sì così funziona.
Il problema però è nel momento in cui voglio definire una matrice dentro una classe, dove per inizializzarla utilizzo :
class ciao {
int *pun;
public:
ciao(int =1)
};
ciao::ciao(int n) {
pun=new int[n*n]; // non posso utilizzare : pun=new int[n][n];
}
----------------
quindi al momento in cui voglio cambiare un valore della matrice si crea il problema di prima : es -> pun[2*3]=5; non lo posso fare perche mi cambia altri valori!
Ma tu vuoi gestire la matrice come array o come array-di-array?
Perchè se vuoi solo l'array dovrai fare qualcosa tipo:
int a[N*N]; // può essere pure dinamico... basta sapere poi quanto è N
...
int at(int i, int j) {
return a[i * N + j];
}
...altrimenti...
int **a;
...
a = new int[N];
for (int i = 0; i < N; ++i) a[i] = new int[N];
...
int at(int i, int j) {
return a[i][j];
}
Scusa eventuali errori sintattici, ho scritto direttamente sul forum.
andreaposse
26-08-2010, 01:41
perfetto ora funziona!! Ho utilizzato il primo modo:
class ciao {
int **pun;
public:
ciao(int =1)
};
ciao::ciao(int n) {
pun=new int*[n];
for (int i=0; i<n;i++)
pun[i] = new int[n];
}
--------
Grazie mille per l'aiuto... a presto... Andrea
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.