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 (7.5) si perde nell'ultima parte, soluzione per il controllo non particolarmente elegante
//<ZANICHELLI> <DAVIDE>, <149861>, <zani83@hotmail.com>,<CAD09>
//<9/07/03> -esame di Fondamenti di informatica,corso di laurea in Ingegneria Informatica
#include<iostream.h>
#include<fstream.h>
main()
{
char tris[3][3]={'_','_','_','_','_','_','_','_','_'};//inizializzala matrice con posti vuoti
ifstream infile("tris.txt"); //definisce il file di imput
short n,m;
short partita[2][9];//array che memorizza il file
for(int i=0; i<9;i++)
{
n=5;//per dare un valore maggiore di 2 ai posti della matrice non dichiarati
m=5;
infile>>n>>m;
partita[0][i]=n;
partita[1][i]=m;
if(i==0) tris[n][m]='x';
else if (m==5) break; //FIXME sicuro che funzioni??
else if(i%2==1) tris[n][m]='o';
else if(i%2==0) tris[n][m]='x';//la martrice 3x3 contiene x per gli x e o per gli o
}
//for(int j=0;j<i;j++)
//cout<<partita[0][j]<<" "<<partita[1][j]<<endl; //mostra l'array "partita"
cout<<"La partita e' "<<endl;
short k;
for(k=0;k<3;k++) //mostra la matrice "tris" che risulta dai valori del file
{
for(short l=0;l<3;l++) {
cout<<tris[k][l];
};
cout<<endl;
};
infile.close();//chiude il file di imput
short ris=3;//ris vale 3 se è patta,1 se vince x,2 se vince o
short x;
for(x=0;x<3;x++)//controllo righe
{
if (tris[x][0]==tris[x][1] && tris[x][1]==tris[x][2])
{
if (tris[x][1]=='x') ris=1;
else if (tris[x][1]=='o') ris=2;
}
}
short y;
for(y=0;y<3;y++)//controllo colonne
{
if (tris[0][y]==tris[1][y] && tris[1][y]==tris[2][y])
{
if (tris[1][y]=='x') ris=1;
else if (tris[1][y]=='o') ris=2;
}
}
//controllo diagonale principale
if (tris[0][0]==tris[1][1] && tris[1][1]==tris[2][2])
{
if (tris[1][1]=='x') ris=1;
else if (tris[1][1]=='o') ris=2;
}
//controllo diagonale secondaria
if (tris[2][0]==tris[1][1] && tris[1][1]==tris[0][2])
{
if (tris[1][1]=='x') ris=1;
else if (tris[1][1]=='o') ris=2;
}
//FIXME peccato, fino a qua andava bene, ora bastava scrivere il risultato
ifstream infile2("uscita.txt"); //definisce il file di imput per la risposta FIXME nessuno ha mai parlato di file per la risposta
//FIXME si scrive input! e non e' un errore di battitura visto che lo riepete piu' volte!
k=0;
char word[20];
cout<<endl;
while (infile2.getline(word,20))
{
k++;
if(k==ris) cout<<word<<endl;
}
infile2.close(); // FIXME troppo complicato, bastava un semplice if-else
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT