Correzione prova pratica del 9 luglio 2003
Correzione prova pratica del 9 luglio 2003
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 (6) lettura file corretta, controllo vincitore implementato male e con errori
// Musi Fabio, 150379, fabio.musi@libero.it, stud05
// 09/07/03 - Esame di Fondamenti di Informatica A, corso di laurea in Ingegneria Informatica
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
const int n=3;
const char nomefile[] = "tris.txt";
main () {
int tris[n][n] = {0};
int i,j,x,y,r=0,q=0,resto=1;
ifstream fin(nomefile);
if (!fin) {
cerr << "Errore: impossibile aprire file " << nomefile << ".\n";
exit(1);
}
while (fin >> i >> j)
{
if (resto == 1)
{
tris[i][j] = 1;
resto = 0;
}
else
{
tris[i][j] = 2;
resto = 1;
}
}
fin.close();
for (x=0; x<n; x++)
{
for (y=0; y<n; y++)
cout << " " << tris[x][y];
cout << endl;
}
//FIXME a parte il fatto che non funziona, l'approccio scelto per il seguito e' orrendo
if (tris[r][q] == tris[r+1][q] == tris[r+2][q]) //FIXME tutte queste condizioni sono sbagliate
{
cout << "Partita vinta da " << tris[r][q] << endl; //XXX queste due istruzioni sono ripetute n volte, una funzione?
exit(2);
}
else if (tris[r][q] == tris[r][q+1] == tris[r][q+2])
{
cout << "Partita vinta da " << tris[r][q] << endl;
exit(3);
}
else if (tris[r][q] == tris[r+1][q+1] == tris[r+2][q+2])
{
cout << "Partita vinta da " << tris[r][q] << endl;
exit(4);
}
else if (tris[r][q+2] == tris[r+1][q+1] == tris[r+2][q])
{
cout << "Partita vinta da " << tris[r][q+2] << endl;
exit(5);
}
else if (tris[r+1][q] == tris[r+1][q+1] == tris[r+1][q+2])
{
cout << "Partita vinta da " << tris[r+1][q] << endl;
exit(7);
}
else if (tris[r+2][q] == tris[r+2][q+1] == tris[r+2][q+2])
{
cout << "Partita vinta da " << tris[r+2][q] << endl;
exit(8);
}
else if (tris[r][q+1] == tris[r+1][q+1] == tris[r+2][q+1])
{
cout << "Partita vinta da " << tris[r][q+1] << endl;
exit(9);
}
else if (tris[r][q+2] == tris[r+1][q+2] == tris[r+2][q+2])
{
cout << "Partita vinta da " << tris[r][q+2] << endl;
exit(10);
}
else {
cout << "Partita patta" << endl;
exit(6);
}
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT