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  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