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
//autore:GUGLIELMETTI MARCO,105105 //FIXME mancano altri dati

//3-10-2003 - esame di Fondamenti di Informatica (V.O.), corso di laurea in ingegneria elettronica



#include <iostream.h>
#include <string.h>

int main()
{
  int n,m,costo[20],x,y,z;
  int d[20][20];
  char s[20];
  char t[20];
  cout<<"Inserisci stringa s:";
  cin.getline(s,20);
  cout<<endl;
  cout<<"Inserisci stringa t:";
  cin.getline(t,20);
  cout<<endl;
  n=strlen(s);
  m=strlen(t);

  if(!n){cout<<"La distanza di Levenshtein Š"<<m<<endl;
    exit(1);}
  else if(!m){cout<<"La distanza di Levenshtein Š "<<n<<endl;
    exit(1);}
    d[n+1][m+1]; //FIXME piantare delle istruzioni a caso di solito e' inutile


    for(int i=0;i<=n;i++)
      d[i][0]=i;
    for(int j=0;j<=m;j++)
      d[0][j]=j;

    for(int i=0;i<n;i++)
      for(int j=0;j<m;j++){
  if(s[i]==t[j]) costo[j]=0; //FIXME a parte il fatto che non segue quanto previsto dall'algoritmo

                             //      il numero di valori da calcolarsi era n x m.

  else costo[j]=1;
      }
    for(int i=0;i<n;i++)
      for(int j=0;j<m;j++){x=(d[j+1][i])+1;
  y=(d[j][i+1])+1;
  z=(d[i][j])+costo[j];
  if (x < y) //FIXME qua sbaglia, se x > y e z < y cosa succede?

  {if (x < z) d[j+1][i+1]=x;
    else  d[j+1][i+1]= z;
  }
  else d[j+1][i+1]=y;
      }
    cout<<"La distanza di Levenshtein Š "<<d[m][n]<<endl;
}





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