Io farei cosi per allocarla
int **mat = new int * [n];
for (int p = 0; p < n; p++)
mat[p] = new int [n];
e per liberare la memoria così
for (int p = 0; p < n; p++)
delete[] mat[p];
delete[] mat;
mat = NULL;
Non credo proprio che il semplice cout<<mat[0][0] <<endl; stampi tutta la matrice formattata...
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int i, n;
int j, k, somma, resto;
int coeff;
int Vett[100];
ifstream input("file1.in");
if(input.is_open())
{
i=0;
if(input.peek()!=EOF)
{
while(!input.eof())
{
input >> Vett[i];
i++;
}
input.close();
}
else
cout<<"Il file e' vuoto\n";
}
else
cout<<"Errore nell'apertura del file\n";
cout << "Inserisci un numero intero\n";
cin >> n;
j = 0;
k = 0;
coeff = n-1;
if (n>0)
{
int **mat = new int * [n];
for (int p = 0; p < n; p++)
mat[p] = new int [n];
resto = n % 2;
for (k=0; k<n; k++)
{
for (j=0; j<n; j++)
{
mat[j][k]=0;
}
}
if (resto == 0)
{
for (k=0; k<n; k++)
{
for (j=0; j<n; j++)
{
if (j==k)
mat[j][k]=1;
somma = j + k;
if (somma==coeff)
mat[j][k]=1;
}
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
cout << mat[i][j];
cout<<endl;
}
for (int p = 0; p < n; p++)
delete[] mat[p];
delete[] mat;
mat = NULL;
}
else
cout << "Numero inserito errato\n";
}