Salve ragazzi ho un problema con un programma sulle matrice.
codice:
#include <iostream>
#include <fstream>
#define maxr 4
#define maxc 4
using namespace std;
void apertura_file(fstream& miofile3)
{
    miofile3.open("miofile.txt",ios::in);
    if(!miofile3)
    {
        cout<<"errore connessione";
        exit(1);
        
    }
    else
    {
        cout<<"connessione riuscita"<<endl;
    }
}
void crea_matrice(int mat[maxr][maxc], fstream& miofile3)
{
    int i,j;
    for (i=0; i<maxr; i++ )
    for (j=0; j<maxc; j++ )
    {
        miofile3>>mat[i][j];
    }
}
void stampa_matrice(int mat[maxr][maxc]){
    cout<<"\n\n";


    for (int i=0; i<maxr; i++)
    {
        cout<<"\n";
        for (int j=0; j<maxc; j++)
        {
            cout<<"\t"<<mat[i][j]<<" ";
        }
    }
}
void inverti_diagonali(int mat[][maxc])
{
  for (int i=0; i<maxr; i++)
  {
      int tmp=mat[i][i];
      mat [i][i]=mat[i][maxr-1-i];
      mat [i][maxr-1-i]= tmp;
  }
  cout<<"\n";
  for(int i=0; i<maxr; i++)
  {
      cout<<"\n";
      for (int j=0; j<maxc; j++)
      {
          cout<<"\t"<<mat[i][j]<<" ";
      }
  }
}
void matrice_trasposta(int mat[maxr][maxc])
{
    for( int y=0; y<maxc; y++)
    {
        cout<<"\n";
        for (int x=0; x<maxr; x++)
        {
            cout<<"\t"<<mat[x][y]<<" ";
        }
    }
}
void massimo_matrice(int mat[maxr][maxc])
{
    int i,j,max;
    max=mat[0][0];
    for (i=0; i<maxr; i++)
    {
        
        for (j=0; j<maxc; j++)
        {
            if (max<mat[i][j])
            {
                max=mat[i][j];
                
            }
        }
    }
    cout<<"il massimo della matrice e':"<<max<<endl;
}
void minimo_matrice(int mat[maxr][maxc])
{
    int i,j,min;
        min=mat[0][0];
    for (i=0; i<maxr; i++)
    {
    
        for (j=0; j<maxc; j++)
        {
            if(min>mat[i][j])
            {
                min=mat[i][j];
            }
        }
    }
    cout<<"il minimo della matrice e':"<<min<<endl;
}
void massimo_righe(int mat[maxr][maxc],int matmax[maxr][maxc])
{
    int i,j,massimor;
    for(i=0; i<maxr; i++){
        massimor=mat[i][0];
        for (j=0; j<maxc; j++)
        {
            if(massimor<mat[i][j])
            
                massimor=mat[i][j];
            
        }cout<<"i massimi per le righe sono:"<<massimor<<endl;
    matmax[i][i]=massimor;
    }
    
}
void crea_matricemax(int matmax[maxr][maxc])
{
    cout<<"\n\n";
    for (int i=0; i<4; i++)
    {
        cout<<"\n";
        for (int j=0; j<4; j++)
        {
            cout<<"\t"<<matmax[i][j];
        }
    }
}
int main() {
    fstream miofile3;
    int mat[maxr][maxc];
    apertura_file(miofile3);
    int matmax[maxr][maxc];
    crea_matrice(mat,miofile3);
    cout<<"la matrice originale nel file e':"<<endl;
    stampa_matrice(mat);
    cout<<"\n\n";
    cout<<"la matrice con la diagonale principale al posto della diagonale secondaria e viceversa e':"<<endl;
    inverti_diagonali(mat);
    cout<<"\n\n";
    cout<<"la matrice trasposta e':"<<endl;
    matrice_trasposta(mat);
    cout<<"\n\n";
    massimo_matrice(mat);
    cout<<"\n";
    minimo_matrice(mat);
    cout<<"\n\n";
    massimo_righe(mat,matmax);
    cout<<"\n\n";
    cout<<"la matrice con i massimi sulla diagonale principale e':"<<endl;
    crea_matricemax(matmax);
    cout<<"\n\n";
    system("pause");
    return 0;
}
Quando voglio creare una nuova matrice con i massimi posti nella diagonale principale ottengo questo per esempio:
7 0 9245584 0
256 7 36095 0
ecc,cioè mi mette i massimi sulla diagonale principale ma sugli altri posti della matrice non escono tutti 0,ma numeri molto grandi.-.
Il problema me lo fa solo quando voglio creare questa nuova matrice dopo aver letto una matrice posta in un file.