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: 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