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) controllo corretto, ma lettura sbagliata ed errori concettuali
//<MARCHINI> <BARBARA>, <150393>, <www.barbara.23@libero.it>
//<09/07/03>
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
char matrice[3][3];
char vincitore(void);
void inizializza(void);
void giocatori(void);
main()
{
cout<<"Questo e' il gioco del tris"<<endl;
ifstream fin("tris.txt");
if (!fin)
{ cerr<<"Errore: il file non puo' venire aperto"<<endl;
exit(1);
}
char c;
c = ' ';
do
{
giocatori();
c = vincitore();
if (c!=' ') break; //FIXME inutila data la condizione del while a seguire
} while (c==' ');
if (c=='X')
cout<<"Partita vinta da X"<<endl;
else if (c=='0') cout<<"Partita vinta da 0"<<endl;
else cout<<"Partita patta"<<endl;
return 0;
}
void giocatori(void)
{
ifstream fin("tris.txt");
inizializza();
{ char riga1[4], riga2[4];
fin.getline(riga1,4);
int x,y;
x--; //FIXME x e y avranno valori a caso e quindi non vedo che senso abbiano queste due istruzioni
y--;
matrice[x][y]=riga1[0][2]; //FIXME riga1 e riga2 sono array monodimensionali
matrice[x][y]='X'; //FIXME cosi' a caso??
fin.getline(riga2,4);
x--; //FIXME come sopra etc...
y--;
matrice[x][y]=riga1[0][2];
matrice[x][y]='0';
}
fin.close();
}
void inizializza(void)
{
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
matrice[i][j]=' ';
}
char vincitore(void)
{
int i;
for (int i=0; i<3; i++)
if (matrice[i][0]==matrice[i][1] && matrice[i][0]==matrice[i][2])
return matrice[i][0];
for (int i=0; i<3; i++)
if (matrice[0][i]==matrice[1][i] && matrice[0][i]==matrice[2][i])
return matrice[0][i];
if (matrice[0][0]==matrice[1][1] && matrice [1][1]==matrice[2][2])
return matrice[0][0];
if (matrice[0][2]==matrice[1][1] && matrice [1][1]==matrice[2][0])
return matrice[0][2];
return ' ';
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT