Correzione prova pratica del 3 ottobre 2003

Correzione prova pratica del 3 ottobre 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) arriva fino all'inizializzazione della matrice poi si perde
//<Tognari> <Jonathan>, <150077>, <Jonathan.Tognari@studenti.unipr.it>, <DIS16>

//<03\10\2003> - esame di Fondamenti di Informatica A,corso di laurea in Ingegneria Elettronica


#include<iostream.h>

#include<string.h>

#include<math.h>


using namespace std;

int main()
{
  int const dim=20;//dichiaro la lunghezza max delle stringhe in ingresso

  int DL;          //dichiaro il parametro fondamentale del mio programma


  char s[dim]; //dichiaro la stringa che deve entrare in imput

  char t[dim]; //dichiaro la stringa che deve entrare in imput


  cout<<"Introdurre una parola di 20 caratteri al massimo: "<<endl;
  cin.getline (s,20); 
  cout<< s <<endl;

  cout<<"Introdurre un altra parola di 20 caratteri al massimo: "<<endl;
  cin.getline (t,20);
  cout<< t <<endl;

  int n= strlen(s);
  int m= strlen(t);
  int costo=0;

  if (n==0) DL=m; //FIXME capisco che le {} sulle tastiere italiane siano difficili da scrivere, ma qua ci volevano

  cout<<"DL= "<< DL <<endl;

  if (m==0) DL=n; //FIXME capisco che le {} sulle tastiere italiane siano difficili da scrivere, ma qua ci volevano

  cout<<"DL= "<< DL <<endl;

  //FIXME qualora n==0 o m==0 doveva anche terminare il programma


  char d [m+1] [n+1];//dichiaro la matrice


  for (int i=0; i<(n+1); i++) // Operazione per creare la numerazione marginale

    d[0][i]=i;            //           della  

  for (int j=0; j<(m+1); j++) //     matrice d

    d[j][0]=j;

  for (int i=0; i<(n-1); i++) //FIXME fuori tema, questo pezzo andava unito al successivo

    for(int j=0; j<(m-1); j++)
    {if t[j]==s[i]   costo=0;
      else     costo=1;
      d[i+1][j+1]=costo;  

    }

  for (int i=1; i<(n+1); i++)
    for (int j=1; j<(m+1); i++)
    { d[i][j]= min(d[j+1][i]+1, d[j][i+1]+1, d[j][i]+costo) ; //FIXME la funzione min non esiste

    }
  DL=d[m][n];

  cout<<"  DL= "<< DL <<endl;

}


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