Ciao, ho dichiarato questa matrice dinamicamente in C++: int **Matrice;
Ora come la inizializzo con caratteri nulli?
Ciao, ho dichiarato questa matrice dinamicamente in C++: int **Matrice;
Ora come la inizializzo con caratteri nulli?
Caratteri? L'hai dichiarata come "int"...
Comunque qual è il problema? Se hai già allocato spazio per tutte le righe, devi semplicemente fare un doppio ciclo for che inizializzi a 0 tutti gli elementi.
every day above ground is a good one
Si scusa volevo dire valori nulli non caratteriOriginariamente inviato da YuYevon
Caratteri? L'hai dichiarata come "int"...
Comunque qual è il problema? Se hai già allocato spazio per tutte le righe, devi semplicemente fare un doppio ciclo for che inizializzi a 0 tutti gli elementi.
Comunque ho solo fatto int **Matrice e mi sono bloccato qui...volevo sapere appunto come inizlizzare a 0 tutti i valori.
Devi innanzitutto allocare spazio per la matrice, altrimenti così hai un semplice puntatore a puntatore con cui non ci fai nulla. Se programmi in C++, usa l'operatore new... spero che tu conosca l'allocazione dinamica della memoria se no il problema viene ancora prima dell'inizializzazione a 0 degli elementi della matrice.
every day above ground is a good one
In questo modo va bene?Originariamente inviato da YuYevon
Devi innanzitutto allocare spazio per la matrice, altrimenti così hai un semplice puntatore a puntatore con cui non ci fai nulla. Se programmi in C++, usa l'operatore new... spero che tu conosca l'allocazione dinamica della memoria se no il problema viene ancora prima dell'inizializzazione a 0 degli elementi della matrice.
codice:int **Matrice; Matrice=new int*[righe]; for(i=0; i<righe: i++) { M[i]=new int[0]; }
Così:
allochi spazio per "righe" righe...codice:Matrice=new int*[righe];
ma così
per ogni riga allochi spazio per 0 colonne...codice:for(i=0; i<righe: i++) { M[i]=new int[0]; }
Comunque la strada è quella.
every day above ground is a good one
Ho capito, quindi l'allocazione è questaOriginariamente inviato da YuYevon
Così:
allochi spazio per "righe" righe...codice:Matrice=new int*[righe];
ma così
per ogni riga allochi spazio per 0 colonne...codice:for(i=0; i<righe: i++) { M[i]=new int[0]; }
Comunque la strada è quella.
[/CODE]
int **Matrice;
Matrice=new int*[righe];
for(i=0; i<righe: i++)
{
M[i]=new int[colonne];
}
[/CODE]
Ora però come si fa ad inizializzare questa matrice con valori nulli?
Ah ma comunque all'interno del ciclo for hai messo M... bada che va scritto Matrice...
Comunque che io sappia l'operatore new azzera di default tutti gli elementi allocati, ma non vorrei sbagliarmi.
Se proprio lo vuoi fare esplicitamente, devi solo scrivere un doppio ciclo for che scorra tutte le righe della matrice (e per ogni riga tutte le colonne) azzerandone gli elementi.
every day above ground is a good one
Sì, a quanto so io l'operatore new azzera di default tutti gli elementi allocati e questo piccolo codice lo conferma:
Comunque nel caso l'operatore non azzerasse di deafult tutti gli elementi sarebbero sufficienti due cicli for che assegnavano il valore 0 a tutti gli elementi della matrice.codice:int** mat; mat = new int*[righe]; for(int i=0; i<righe; i++) { mat[i] = new int[colonne]; for(int j=0; j<colonne; j++) cout << mat[i][j]; cout << endl; }
Ciao... L' allocazione tramite new richiama si i costruttori di default, ma solo nei tipi definiti dall' utente. Per i tipi di "default" può essere usato il cosìdetto pseudocostruttore :
Per settare i valori della matrice a zero devi scorrere le sue righe e per ognuna di questa, settare a 0 le sue colonnecodice:int* pointer = new int(0);
codice:int** matrice = NULL; Matrice = new int* [RIGHE]; for(int i=0; i<RIGHE; i++) { Matrice[i] = new int[COLONNE]; for(int j=0; j<COLONNE; j++) { Matrice[i][j] =0; } }