L'errore è all'inizio e sinceramente non so come faccia il programma a funzionare per qualunque numero ...
codice:
int dim, i, j;
int ** m = new int*[dim];
Qui dim non è definito o è uguale a 0, per cui l'allocazione che fai non ha alcun significato.
Codice corretto:
codice:
#include <iostream>
using namespace std;
int main(){
int dim, i, j;
int **m;
cout << "Choose the dimension of the squared matrix: ";
cin >> dim;
m = new int*[dim];
for(i=0;i<dim;i++){
m[i] = new int[dim];
}
for(i=0;i<dim;i++){ // Righe
for (j=0;j<dim;j++){ // Colonne
m[i][j] = i*dim + (j + 1);
}
}
for(i=0;i<dim;i++){ // Righe
for (j=0;j<dim;j++){ // Colonne
cout << " " << m[i][j] << " ";
}
cout << endl;
}
return 0;
}
Così dovrebbe andare.