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, ma sceglie una pessima struttura dati
// Spiacci Fabio Mat. 163581 data: 07/07/2004 Teledidattico
// Esame di Fondamenti di Informatica A, corso di laurea in ingeneria informatica.
#include <iostream>
#include <fstream>
using namespace std;
const int max_rig = 26;
const int max_col = 2;
void riempi(int matrice [max_rig] [max_col]);
void stampa_testo(int matrice [max_rig] [max_col]);
// ***** programma principale *****
int main()
{
int matrice [max_rig] [max_col] = {0}; //FIXME pessima scelta di struttura dati, richiede la scansione per trovare il dato di interesse
riempi(matrice);
stampa_testo(matrice);
}
void riempi(int matrice [max_rig] [max_col])
{
ifstream myFile("tabella.txt");
if (! myFile)
{
cout << "Error opening file" << endl;
exit (0);
}
int r = 0;
int c = 0;
char leggi_car;
int leggi_int;
while (!myFile.eof())
{
myFile >> (leggi_car);
matrice [r] [c] = int(leggi_car);
myFile >> (leggi_int);
matrice [r] [c+1] = int(leggi_int);
r ++;
c = 0; //XXX c non lo aveva modificato niente, in effetti è anche inutile
}
myFile.close();
}
void stampa_testo(int matrice [max_rig] [max_col])
{
char ch;
bool trovato = false;
int r = 0;
ifstream myFile("testo.txt");
if (! myFile)
{
cout << "Error opening file" << endl;
exit (1);
}
while (!myFile.eof())
{
cout << ch; //FIXME al primo ciclo stampa un carattere a caso!
myFile.get(ch);
if (ch == '[')
{
myFile.get(ch);
while (trovato == false)
{
if (char (matrice [r] [0]) == ch)
{
cout << int(matrice [r] [1]);
myFile.get(ch); // salto la seconda parentesi
myFile.get(ch); // salto la seconda parentesi
trovato = true;
}
r ++;
}
r = 0;
trovato = false;
}
}
myFile.close();
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT