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 (6) lettura file corretta, controllo vincitore implementato male e con errori
// Musi Fabio, 150379, fabio.musi@libero.it, stud05

// 09/07/03 - Esame di Fondamenti di Informatica A, corso di laurea in Ingegneria Informatica


#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>

const int n=3;
const char nomefile[] = "tris.txt";

main () {

  int tris[n][n] = {0};
  int i,j,x,y,r=0,q=0,resto=1;

  ifstream fin(nomefile);
  if (!fin) {
    cerr << "Errore: impossibile aprire file " << nomefile << ".\n";
    exit(1);
  }


  while (fin >> i >> j)
  {
    if (resto == 1)
    {
      tris[i][j] = 1;
      resto = 0; 
    }

    else
    {
      tris[i][j] = 2;
      resto = 1;
    }
  }


  fin.close();

  for (x=0; x<n; x++)
  {
    for (y=0; y<n; y++)
      cout << " " << tris[x][y];
    cout << endl;
  }

  //FIXME a parte il fatto che non funziona, l'approccio scelto per il seguito e' orrendo


  if (tris[r][q] == tris[r+1][q] == tris[r+2][q]) //FIXME tutte queste condizioni sono sbagliate

  {
    cout << "Partita vinta da " << tris[r][q] << endl; //XXX queste due istruzioni sono ripetute n volte, una funzione?

    exit(2);
  }
  else if (tris[r][q] == tris[r][q+1] == tris[r][q+2])
  {
    cout << "Partita vinta da " << tris[r][q] << endl;
    exit(3);
  }
  else if (tris[r][q] == tris[r+1][q+1] == tris[r+2][q+2])
  {
    cout << "Partita vinta da " << tris[r][q] << endl;
    exit(4);
  }
  else if (tris[r][q+2] == tris[r+1][q+1] == tris[r+2][q])
  {
    cout << "Partita vinta da " << tris[r][q+2] << endl;
    exit(5);
  }
  else if (tris[r+1][q] == tris[r+1][q+1] == tris[r+1][q+2])
  {
    cout << "Partita vinta da " << tris[r+1][q] << endl;
    exit(7);
  }
  else if (tris[r+2][q] == tris[r+2][q+1] == tris[r+2][q+2])
  {
    cout << "Partita vinta da " << tris[r+2][q] << endl;
    exit(8);
  }
  else if (tris[r][q+1] == tris[r+1][q+1] == tris[r+2][q+1])
  {
    cout << "Partita vinta da " << tris[r][q+1] << endl;
    exit(9);
  }
  else if (tris[r][q+2] == tris[r+1][q+2] == tris[r+2][q+2])
  {
    cout << "Partita vinta da " << tris[r][q+2] << endl;
    exit(10);
  }
  else { 
    cout << "Partita patta" << endl;
    exit(6);
  }

  return 0;
}


Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a bertozzi@CE.UniPR.IT