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 funzionante con qualche inefficienza, dimostra idiosincrasie nei confronti del C
// Nigro Carlo, 145559, carlo.nigro@studenti.unipr.it, STUD20
// 07/07/2004 - Esame di fondamenti di informatica A, cdl. Ingegneria Informatica
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
int leggi_tab(char);
ifstream fin("tabella.txt"); //FIXME non vi e' ragione di definirla globale
main()
{
ifstream leggi("testo.txt");
char testo, lettera;
int count=0;
while(leggi.get(testo))
{
count++;
if(testo == ']') goto end; //FIXME dato il seek successivo non ne vedo il motivo
if(testo == '[')
{
leggi >> lettera;
cout << leggi_tab(lettera);
count += 2;
leggi.seekg(count); //FIXME count e' inutile, basta fare un seek relativo: cout.seekg(2,ios_base::cur);
goto end; //FIXME perfettamente sostituibile con un else dopo la graffa! coi goto non si deve abusare
}
cout << testo;
end:
;
}
cout << endl;
}
int leggi_tab(char c) //FIXME questa funzione e' inefficiente! Ogni volta si rilegge il file!
{
char lettera;
int n;
while(fin >> lettera)
{
if(lettera == c)
{
fin >> n;
fin.clear();
fin.seekg(0);
return n;
}
}
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT