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 dati grossomodo corretta, controllo sbagliato, fuori tema
//FIXME mancano: nome, cognome, matricola, posta elettronica... Il recuperarli fa perdere a me tempo, a lei dei punti
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
const char nomefile[] = "tris.txt"; // file predefinito
const int dim = 3;
int main () {
int i, j;
char a[dim][dim];
for (int s=0; s<dim; s++) { // si riempisce l'array iniziale //FIXME riempisce!!!!
for (int u=0; u<dim; u++)
a[s][u] = 'a';
}
int n=1;
//char t1, t2;
ofstream fout(nomefile); // Scrivo nel file //FIXME magari dovevo leggerlo!!!!
if (!fout){
cerr << "Errore: impossibile scrivere sul file " << nomefile << ".\n";
exit(1);
}
fout << "1 1\n";
fout << "2 1\n";
fout << "2 0\n";
fout << "0 2\n";
fout << "0 0\n";
fout << "2 2\n";
fout << "1 0\n";
fout.close();
ifstream fin(nomefile);
if (!fin) {
cerr << "Errore: impossibile aprire file " << nomefile << ".\n";
exit(1);
}
while (fin >> i >> j) { // legge il file
for (int a1=0; a1<dim; a1++) { //riempiamo l'array
for (int b2=0; b2<dim; b2++) //FIXME non e' necessario scrivere lo stesso dato in una variabile 9 volte di seguito, di solito una basta
if(n%2==0)
a[i][j]='O';
else a[i][j]='X';
}
n++;
}
for (int x=0; x<dim; x++) {
for (int y=0; y<dim; y++)
//cout << " " << a[x][y];
//cout << endl;
if (a[0][y]==a[0][0] || a[x][0]== a[0][0] || a[x][dim/2]==a[0][dim/2]
|| a[dim/2][y]==a[dim/2][0])
if (a[0][0]=='X'|| a[0][dim/2]=='X'|| a[dim/2][0]=='X')
{
cout << "partita vinta da X\n";
exit(0);
}
else
{
cout << "partita vinta da O\n";
exit(0);
}
}
//FIXME lei si dimentica che potrebbe esserci anche un risultato di parita' e comunque quanto sopra non funziona
fin.close();
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT