Salve ragazzi ho un problema con un programma sulle matrice.
Quando voglio creare una nuova matrice con i massimi posti nella diagonale principale ottengo questo per esempio: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; }
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.
![]()

Rispondi quotando
