In un esercizio mi viene richiesto di trasporre una matrice rispetto alla sua diagonale principale in blocchi da 2x2. Ho pensato in primis di creare una matrice di appoggio in modo da copiare solo i blocchi che mi servono. Qui c' è il problema perchè non riesco a capire perchè la sottomatrice non
viene copiata correttamente...grazie in anticipo
codice:
#include <iostream>
using namespace std;
void leggimatrice(int dim,int *mat);
void stampa(int dim,int *mat);
void trasposta(int dim,int *mat);
int main()
{
int dim;
do
{
cout<<"inserisci dimensione della matrice quadrata ";
cin>>dim;
} while(dim<=0 || dim%2!=0 );
int mat[dim][dim];
leggimatrice(dim,&mat[0][0]);
stampa(dim,&mat[0][0]);
trasposta(dim,&mat[0][0]);
}
void leggimatrice(int dim,int *mat)
{
for(int i=0;i<dim;i++)
{
for(int j=0;j<dim;j++)
{
cout<<"inserisci elemento ["<<i+1<<"]["<<j+1<<"] ";
cin>>*(mat+i*dim+j);
}
}
}
void stampa(int dim,int *mat)
{
for(int i=0;i<dim;i++)
{
for(int j=0;j<dim;j++)
{
cout<<*(mat+i*dim+j)<<" ";
}
cout<<endl;
}
}
void trasposta(int dim,int *mat)
{
int k=0,l=0;
int mat2[2][2];
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
mat2[i][j]=0;
}
}
for(int i=0;i<dim-3;i++)
{
for(int j=2;j<dim-1;j++)
{
mat2[k][l]=*(mat+i*dim+j);
l++;
}
k++;
l=0;
}
}