|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 3
|
[C++] problema: array bidimensionali
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 |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jun 2004
Città: Pecetto
Messaggi: 73
|
Perche' non definisci semplicemente
int a[5][5]; ?? e codifichi di conseguenza?
__________________
Gianni |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 3
|
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! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Ma tu vuoi gestire la matrice come array o come array-di-array?
Perchè se vuoi solo l'array dovrai fare qualcosa tipo: Codice:
int a[N*N]; // può essere pure dinamico... basta sapere poi quanto è N
...
int at(int i, int j) {
return a[i * N + j];
}
Codice:
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];
}
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 3
|
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:59.



















