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:
- FIXME: segnalazione di un errore, non necessariamente sono tutti segnalati e non necessariamente sono tutti presi in considerazione
per il voto finale
- TODO: segnala l'assenza di parti di codice
- XXX: segnala qualcosa di non chiaro o inutile ai fini del codice, commenti di ordine generale, errori di battitura o suggerimenti
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