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 la tabella in un array di stringhe, dopo si perde
//<BOCCHI> <GIOVANNI>, <119083>, <giovannibocchi@aliceposta.it>, <DIS18>

//<7/7/2004>- Fondamenti di informatica A,corso di laurea in Ingegneria elettronica,vecchio ordinamento

# include <iostream>
# include <fstream>
# include <stdlib.h>
# include <string.h>

//FIXME codice non indentato


using namespace std;
const int LUN_RIGA = 500; //lunghezza max di ogni riga del file FIXME e chi glielo ha detto?

char nomefile[]="tabella.txt";
int creatab(char*[]);   //la funzione creatab esegue la letura del file e l'inizializzazione 

//dell'array tabella

void controlla (char);  //funzione che controlla il file testo.txt carattere per carattere                        

main()
{

  char * tabella[26]; //Ho definito un array di 26 puntatori a char

  int creatab (char*tabella[]); //FIXME e questo prototipo cosa ci fa qui?

  {
    char c,riga[4]; // ogni riga di tabella è lunga la max 4

    {
      ifstream tabellaf ("tabella.txt");
      if (!tabellaf)
      {
  cerr<<"Errore:file tabella.txt non può venire aperto.\n";
  exit(1);
      }
      while (!tabellaf.eof() && tabellaf >> c >> riga) //FIXME la prima condizione è inutile

      {
  tabella [c-'A']=new char [strlen(riga)+1]; //tabella[0] contiene il numero associato ad A

  strcpy (tabella[c-'A'],riga);              //e così via 

      } //FIXME ma leggere i numeri come tali e non come stringhe? 

      //FIXME e dove lo chiude il file?



      ifstream testof ("testo.txt");
      if (!testof)
      {
  cerr<<"Errore:file testo.txt non può venire aperto.\n";
  exit(1);
      }
      ifstream fin ("testo.txt"); //FIXME perché lo apre due volte? e come mai la seconda volta non controlla l'esito?

      int numriga = 0;
      while ((c=fin.get())  !=EOF)
  switch (c)
  {
    case '[':
      controlla (c);  //FIXME questa funzione non esiste

      tabellaf >> tabella[]; //FIXME ?????

      fin.close(); //FIXME ????

      cout<<testof< endl; //FIXME non si può stampare un file così (perlomeno in C/C++)

  }

//FIXME incompleto



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