Ciao,da poco ho iniziato a studiare le operazioni sui file.
Ora devo leggere una matrice di interi da un file di testo e stamparla a video, quindi devo sommare i suoi valori e stampare a video anche questo risultato.
Con un array mi viene perfettamente.
Nel caso della matrice invece,per far stampare i numeri devo utilizzare un metodo diverso e in ogni caso non me li stampa seguendo lo schema della matrice( righe e colonne ) ma uno sotto l'altro.codice:#include "fileArray.h" void leggiArrayFile( vett v, int &r ) { int register i; fstream file; file.open( SORGENTE, ios::in ); if( !file ) { cout<<"Il file non esiste!\n"; } else{ r = 0; while( !file.eof() ) { file>> v[ r ]; r++; } } for( i = 0; i < r; i++ ) { cout<< v[ i ] << " "; } file.close(); } void sommaArrayFile( vett v, int &r ) { int register i; int sArray = 0; for( i = 0; i < r; i++ ) { sArray += v[ i ]; } cout<<"\nLa somma degli interi contenuto nel file e' di: " << sArray; }
In pratica in questo modo il primo numero scritto all'interno del file viene considerato riempimento.codice:#include "FileMatrici.h" void leggiMatriceFile( matrice m, int &r, int &c ) { int register i, j; fstream file; file.open( SORGENTE, ios::in ); if( !file ) { cout<<"Il file non esiste!\n"; } else{ file>> r; file>> c; for( i = 0; i < r; i++ ) { for( j = 0; j < c; j++ ) { file>> m[ i ][ j ]; } cout<< "\n"; } } for( i = 0; i < r; i++ ) { for( j = 0; j < c; j++ ) { cout<< m[ i ][ j ]; } cout<<"\n"; } file.close(); } void sommaMatriceFile( matrice m, int &r, int &c ) { int register i, j; int sMatrice = 0; for( i = 0; i < r; i++ ) { for( j = 0; j < c; j++ ) { sMatrice += m[ i ][ j ]; } } cout<<"\nLa somma degli interi della matrice contenuti nel file e\' di: " << sMatrice << "\n"; }
Il file in questo caso deve essere scritto così:
Dove 16 serve per far capire al ciclco che deve leggere 16 valori in totale.codice:16 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
Però io vorrei che il riempimento fosse calcolato,in base alla fine del file, così come viene fatto con l'array.
Cioè in questo modo:
In questo modo non bisogna aggiungere alcun numero alla matrice esistente nel file.codice:r = 0; c = 0; while( !file.eof() ) { file>> m[ r ][ c ]; r++; c++; }
Come posso fare per integrare questo metodo senza che mi spari una serie di numeri enormi che non riguardano la matrice scritta nel file?
Grazie.

Rispondi quotando

