skynet ha scritto:
int d;
int M[d][d];
quest altro è un altro errore. Il compilatore ti può dire che non può allora spazio di una matrice a dimensioni ignoti (d non è stato inzializzato). quindi soluzione:
const int d = 10;
int M[d][d];
ora non da + errore perche d è definito. Ma qui sorge un altro problema. Tu d lo scegli in run-time (a programma avviato) quindi il metodo migliore sarebbe quello di creare la matrice dopo aver saputo la dimensione di d. Ma quì forse andiamo sull'avanzato. iniziamo a risolvere i problemi prima poi espandiamo lo sviluppo.
Come vedi nel mio post precedente avevo previsto questa cosa. Tu usi d perche imposti quello come max, ma siccome poi lasci all'utente la scelta della grandezza della matrice è meglio usare quel valore come grandezza massima. Quindi è meglio la scelta del professore. Ti metto un implementazione un po avanzata ma che andrebbe meglio nel caso non sapessimo la dimensione e volessimo ingradire la matrice prendendo come dato la scelta dell'utente. E' un metodo avanzato (si fa x dire) che non hai fatto ancora ma giusto per farti capire l'implementazione migliore.
//implementi la matrice con dimensione ignota
int **M;
//prendi la dimensione dall'input (scelta utente)
cin >> d;
//applichi la dimensione alla matrice
int i = 0;
M = new (int *)[d];
for(i = 0; i < d; i++)
M[i] = new int[d];
//alla fine del programma liberi i blocchi di memoria che hai occupato
for(i = 0; i< d; i++)
delete [] M[i];
delete [] M;
Come vedi questo metodo è molto + lungo ma accettabile nel caso in cui non si sa la dimensione dell'oggetto.