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 (7) sbaglia calcolo del minimo e altri errori minori
// erika rampini 149919 erikarampini297@msn.com
#include<iostream.h>
#include<string.h>
main(){
char s[20],t[20];
cin.getline(s,20);
cin.getline(t,20);
int n=strlen(s);
int m=strlen(t),DL;
int d[m+1][n+1];
int costo,min;
// cout<<n<<" "<<m<<endl;
if(n==0){
DL=m;
cout<<"la distanza di Levenshtein e'"<<" "<<DL<<endl;
exit(0);
}
else if(m==0){ //FIXME l'else e' inutile
DL=n;
cout<<"la distanza di Levenshtein e'"<<" "<<DL<<endl;
exit(0);
}
for(int p=0,s=0;p<n+1,s<=n;p++,s++) //FIXME durante questo ciclo p ed s hanno sempre lo stesso valore (ovvero una e' di troppo)
d[0][p]= s;
for(int x=0,z=0;x<m+1,z<=m;x++,z++) //FIXME vedi sopra
d[x][0]= z;
// provo a vedere se mi da la matrice
// for(int r=0;r<m+1;r++){
// for(int g=0;g<n+1;g++){
// cout<<d[r][g];
// }
//cout<<endl;
// }
for(int i=0;i<=n-1;i++){
for(int j=0;j<=m-1;j++){
if(t[j]==s[i]) costo=0;
else costo=1;
if(d[j+1][i]+1<d[j][i+1]+1) min=d[j+1][i]+1;
else min=d[j][i+1];
if(d[j][i+1]+1<d[j][i]+costo) min=d[j][i+1]+1; //FIXME cosi' non funziona, una volta inizializzato min deve poi usarlo per i confronti
else min=d[j][i]+costo;
if(d[j][i]+costo<d[j+1][i]+1) min=d[j][i]+costo;
else min=d[j+1][i]+1;
d[j+1][i+1]=min;
}
}
DL=d[m][n];
cout<<"la distanza di Levenshtein e'"<<" "<<DL;
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT