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 (10) fondamentalmente corretto
//Albertelli Marco, 150201, dontcrysenzaparole@libero.it, dis17
//19/07/2003 - esame di fondamenti di informatica, telecomunicazioni
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
const int dim=3;
main()
{
int m[dim][dim], i,j,contatore=0,prodotto=1;
for(int k=0;k<dim;k++)
for(int l=0;l<dim;l++)
m[k][l]=0;
ifstream file("tris.txt");
if(!file)
{
cerr<<"non riesco ad aprire il file tris.txt\n";
exit(1);
}
while(file>>i>>j)
{
if(contatore%2)
m[i][j]=1;
else
m[i][j]=2;
contatore+=1;
}
file.close();
for(int riga=0;riga<dim;riga++)
{
for(int colonna=0;colonna<dim;colonna++)
{
prodotto=prodotto*(m[riga][colonna]);
if(!prodotto)
break;
}
if(prodotto==8)
{
cout<<"Partita vinta da X";
exit(2);
}
if(prodotto==1)
{
cout<<"Partita vinta da O";
exit(3);
}
prodotto=1;
}
for(int riga1=0;riga1< dim;riga1++)
{
for(int colonna1=0;colonna1<dim;colonna1++)
{
prodotto=prodotto*m[colonna1][riga1];
if(!prodotto)
break;
}
if(prodotto==8)
{
cout<<"Partita vinta da X";
exit(2);
}
if(prodotto==1)
{
cout<<"Partita vinta da O";
exit(3);
}
prodotto=1;
}
if(((m[0][0])*(m[1][1])*(m[2][2]))==8)
{
cout<<"partita vinta da X";
exit(4);
}
if((m[1][1]*m[2][2]*m[0][0])==1) //FIXME se lo poteva calcolare una volta sola
{
cout<<"partita vinta da O";
exit(5);
}
if(((m[2][0])*(m[1][1])*(m[0][2]))==8)
{
cout<<"partita vinta da X";
exit(6);
}
if((m[2][0]*m[1][1]*m[0][2])==1) //FIXME anche questo
{
cout<<"partita vinta da O";
exit(7);
}
cout<<"partita patta";
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT