Correzione prova pratica del 7 luglio 2004

Correzione prova pratica del 7 luglio 2004


Istruzioni:

il commento iniziale rappresenta il giudizio complessivo sul programma. Nei commenti trovate: Il codice presentato non è necessariamente identico a quello consegnato in quanto possono essere state effettuate modifiche per renderlo compilabile e/o per la corretta indentazione.


//XXX  legge solo una riga del primo file, rilegge piu' volte il secondo adeguata
#include<iostream>//<bergamini><Marco><157291><-_m4rk_-@libero.it><Stud17> 
#include<fstream>

#include<cstring>

using namespace std ; 
void read_file( char* buffer ) ; 
char Control_file ( char ) ; 
const int Max_length = 100  ; 
int main ()
{

  char buffer[Max_length] ; 
  read_file ( buffer ) ; 
  system ("pause") ; 
  return 0 ; 
}

void read_file ( char* buffer ) 
{
  char lettera ;  
  char Nome_file[] = "testo.txt" ;
  ifstream read(Nome_file) ; 
  if (!read) {
    cerr << " file non trovato " ; 
    exit(1) ; 
  }
  read.getline(buffer , Max_length) ; //XXX leggere una riga e poi analizzarla carattere per carattere e' discutibile, bastava leggere carattere per carattere

  char* p ; 
  for ( p = buffer ; *p ; p++ )
    if ( *p == '[' ) { lettera = *(p+1) ; 
      char tornato = Control_file( lettera ) ;  
      cout << tornato << endl ;  
    } //FIXME e se non e' una lettera? E se il file e' composto da piu' righe?

  cout << buffer << endl ;  
  read.close() ; 
}

char Control_file( char lettera )  //FIXME approccio poco efficiente. Lei legge il secondo file ogni volta!

{
  const int Max_alfab = 30 ; 
  char Nome_file2[] = "tabella.txt" ; 
  ifstream leggi( Nome_file2 ) ; 
  if (!leggi){
    cerr << "file non trovato " ; 
    exit(2) ; 
  } 
  char lettera_1[2]  ; 
  char numero ; 
  char tabella[Max_alfab] ;
  char tabella_1[Max_alfab] ;  
  char*p ; 
  for ( int i = 0 ; leggi >> lettera_1 >> numero ; i++ ){
    p = lettera_1 ;
    if ( *p == lettera )  
      return numero ;  
  } 


  leggi.close() ; 
} 



Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a bertozzi@CE.UniPR.IT