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 (5) lettura file non corretta, controllo sbagliato
// Murgioni Roberto, 131145, rmurgioni@tiscalinet.it, stud06
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
main()
{
int xrig[5],xcol[5], yrig[5],ycol[5],i=0;
ifstream fin("tris.txt");
if(!fin) {
cerr<<"errore...."<<endl;
exit(1);
}
while (fin){
fin>>xrig[i]>>xcol[i];
fin>>yrig[i]>>ycol[i];
i++;
};
fin.close();
int partita[3][3] ={ {5,5,5}, {5,5,5}, {5,5,5} };
for (int a=0;a<5;a++)
{
int b,c,d,e,h;
b=xrig[a];
c=xcol[a];
d=yrig[a];
e=ycol[a]; //FIXME e se ha letto meno di 10 righe (cosa peraltro sempre vera)??
partita[b][c]=1;
partita[d][e]=2;
for (int s=0;s<3 ;s++) {
if (partita[s][0]==partita[s][1])
{
if (partita[s][0]==partita[s][2]) //FIXME l'operatore && questo sconsosciuto!
{
if (partita [s][0]==2)
{
cout << "La partita ‚ stata vinta da O";
s=3;a=5;
}
if (partita [s][0]==1)
{
cout << "La partita ‚ stata vintada X";
s=3;a=5;
}
}
}
if (partita[0][s]==partita[1][s])
{
if (partita[0][s]==partita[2][s]) //XXX come sopra
{
if (partita [0][s]==2)
{
cout << "La partita ‚ stata vinta da O";
s=3;a=5;
}
if (partita [0][s]==1)
{
cout << "La partita ‚ stata vinta da X";
s=3;a=5;
}
}
}
}
if (partita[0][0]==partita[1][1]==partita[2][2]) //FIXME no, le condizioni non si fanno cosi' (ancora una volta && sarebbe stato utile)
{
if (partita[0][0]==2){cout << "ha vinto o";a=5;} //XXX bastava un else
if (partita[0][0]==1){cout << "ha vinto x";a=5;} //FIXME perche' a=5??
}
if (partita[0][2]==partita[1][1]==partita[2][0]) //XXX come sopra
{
if (partita[1][1]==2){cout << " Ha vinto O";a=5;}
if (partita[1][1]){cout <<"ha vinto x";a=5;}
}
}
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT