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.