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:
- FIXME segnalazione di un errore, non necessariamente sono tutti segnalati e non necessariamente sono tutti presi in considerazione
per il voto finale
- TODO segnala l'assenza di parti di codice
- XXX segnala qualcosa di non chiaro o inutile ai fini del codice, commenti di ordine generale, errori di battitura o suggerimenti
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