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 (10) corretto
// RUGGERI LETIZIA, 117633, rfelettro@libero.it , dis09
// 03/10/2003 - esame di fondamenti di informatica,
// corso di Laurea in Ing. Telecomunicazioni
# include <iostream.h>
# include <string.h>
# include <stdlib.h>
# include <stdio.h>
const int lmax = 20;
main()
{ int n, m, DL, costo;
char s [lmax], t[lmax];
cout <<"Inserire stringa s (massimo 19 caratteri): ";
cin.getline(s,lmax);
cout << endl;
cout <<"Inserire stringa t (massimo 19 caratteri): ";
cin.getline(t,lmax);
cout << endl;
cout << endl;
n = strlen (s);
m = strlen (t);
if (n == 0) { DL = m;
cout <<"La distanza di Levenshtein Š ";
cout << DL << endl;
exit (1);
}
if (m == 0) { DL = n;
cout <<"La distanza di Levenshtein Š ";
cout << DL << endl;
exit (2);
}
int d[lmax][lmax];
int i, j, k, h; //XXX non vi era necessita' di 4 variabili, ne bastavano due (le variabili sono ecologiche e si possono riciclare)
for (k=0; k <=n; k++) d[0][k]=k;
for (h=0; h <=m; h++) d[h][0]=h;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{ if (t[j]==s[i]) costo = 0;
else costo = 1;
int min = 100;
if ( (d[j+1][i] + 1) < min) min = d[j+1][i]+1;
// XXX poteva direttamente scrivere int min = d[j+1][i]+1;
if ( (d[j][i+1] + 1) < min) min = d[j][i+1]+1;
if ( (d[j][i] + costo) < min ) min = d[j][i]+costo;
d[j+1][i+1] = min;
}
DL = d[m][n];
cout <<"La distanza di Levenshtein Š ";
cout << DL << endl;
getchar();
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT