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 file non corretta, controllo sbagliato
// Murgioni Roberto, 131145, rmurgioni@tiscalinet.it, stud06



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


main()
{
  int xrig[5],xcol[5], yrig[5],ycol[5],i=0;
  ifstream fin("tris.txt");

  if(!fin)  {
    cerr<<"errore...."<<endl;
    exit(1);

  }
  while (fin){
    fin>>xrig[i]>>xcol[i];
    fin>>yrig[i]>>ycol[i];

    i++;

  };
  fin.close();

  int partita[3][3] ={ {5,5,5}, {5,5,5}, {5,5,5} };

  for (int a=0;a<5;a++)
  {
    int b,c,d,e,h;
    b=xrig[a];
    c=xcol[a];
    d=yrig[a];
    e=ycol[a]; //FIXME e se ha letto meno di 10 righe (cosa peraltro sempre vera)??

    partita[b][c]=1;
    partita[d][e]=2;
    for (int s=0;s<3 ;s++)     {
      if (partita[s][0]==partita[s][1])
      {
  if (partita[s][0]==partita[s][2]) //FIXME l'operatore && questo sconsosciuto!

  {
    if (partita [s][0]==2)
    {
      cout << "La partita ‚ stata vinta da O";
      s=3;a=5;
    }
    if (partita [s][0]==1)
    {
      cout << "La partita ‚ stata vintada X";
      s=3;a=5;
    }
  }
      }

      if (partita[0][s]==partita[1][s])
      {
  if (partita[0][s]==partita[2][s]) //XXX come sopra

  {
    if (partita [0][s]==2)
    {
      cout << "La partita ‚ stata vinta da O";
      s=3;a=5;
    }
    if (partita [0][s]==1)
    {
      cout << "La partita ‚ stata vinta da X";
      s=3;a=5;
    }
  }
      }
    }
    if (partita[0][0]==partita[1][1]==partita[2][2]) //FIXME no, le condizioni non si fanno cosi' (ancora una volta && sarebbe stato utile)

    {
      if (partita[0][0]==2){cout << "ha vinto o";a=5;} //XXX bastava un else

      if (partita[0][0]==1){cout << "ha vinto x";a=5;} //FIXME perche' a=5??

    }

    if (partita[0][2]==partita[1][1]==partita[2][0]) //XXX come sopra

    {
      if (partita[1][1]==2){cout << " Ha vinto O";a=5;} 
      if (partita[1][1]){cout <<"ha vinto x";a=5;}
    }
  }







  return 0;

}


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