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 (10) fondamentalmente corretto
//Albertelli Marco, 150201, dontcrysenzaparole@libero.it, dis17

//19/07/2003 - esame di fondamenti di informatica, telecomunicazioni

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h>


const int dim=3;

main()
{
  int m[dim][dim], i,j,contatore=0,prodotto=1;
  for(int k=0;k<dim;k++)
    for(int l=0;l<dim;l++)
      m[k][l]=0;
  ifstream file("tris.txt");
  if(!file)
  {
    cerr<<"non riesco ad aprire il file tris.txt\n";
    exit(1);
  }
  while(file>>i>>j)
  {
    if(contatore%2)
      m[i][j]=1;
    else
      m[i][j]=2;
    contatore+=1;
  }
  file.close();
  for(int riga=0;riga<dim;riga++)
  {
    for(int colonna=0;colonna<dim;colonna++)
    {
      prodotto=prodotto*(m[riga][colonna]);
      if(!prodotto)
  break;
    }
    if(prodotto==8)
    {
      cout<<"Partita vinta da X";
      exit(2);
    }
    if(prodotto==1)
    {
      cout<<"Partita vinta da O";
      exit(3);
    }
    prodotto=1;
  }
  for(int riga1=0;riga1< dim;riga1++)
  {
    for(int colonna1=0;colonna1<dim;colonna1++)
    {
      prodotto=prodotto*m[colonna1][riga1];
      if(!prodotto)
  break;
    }
    if(prodotto==8)
    {
      cout<<"Partita vinta da X";
      exit(2);
    }
    if(prodotto==1)
    {
      cout<<"Partita vinta da O";
      exit(3);
    }
    prodotto=1;
  }
  if(((m[0][0])*(m[1][1])*(m[2][2]))==8)
  {
    cout<<"partita vinta da X";
    exit(4);
  }
  if((m[1][1]*m[2][2]*m[0][0])==1) //FIXME se lo poteva calcolare una volta sola

  {
    cout<<"partita vinta da O";
    exit(5);
  }
  if(((m[2][0])*(m[1][1])*(m[0][2]))==8)
  {
    cout<<"partita vinta da X";
    exit(6);
  }
  if((m[2][0]*m[1][1]*m[0][2])==1) //FIXME anche questo

  {
    cout<<"partita vinta da O";
    exit(7);
  }
  cout<<"partita patta";
  return 0;
}


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