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 (4) errori sparsi, non arriva neanche alla inizializzazione delle matrici
// Garavelli Sara matr:124189
// sara.garavelli@tin.it
// data:03/10/03 esame di Fondamenti di informatica A
// Corso di laurea in Ingegneria delle Telecomunicazioni
//Distanza di Levenshtein
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
const int rig=21;
const int col=21;
int main()
{
char s[20];
char t[20];
int n, m,DL,costo,min;
cout<<"Introduci due stringhe:"<<endl;
cin>>s;
cin>>t;
n=strlen(s); //calcolo lunghezza stringhe
m=strlen(t);
if (n==0 && m!=0) //calcolo di DL se m=0 FIXME sbagliato imporre m!=0 (nel testo non c'e')
{DL=m; //o n=0;
cout<<DL<<endl;
exit(1);
}
else if (m==0 && n!=0) //FIXME non solo la condizione e' fuori tema ma l'else non ci voleva
{DL=n;
cout<<DL<<endl;
exit(1);
}
else //FIXME inutile
{int d[rig][col]; //inizializzaz della matrice
for (int i=0;i<n;i++)
{ d[i][col]=i; //FIXME cosi' inizializza qualcosa che sta fuori dalla matrice e non la prima colonna (quella di indice 0)
cout<<d[i][col];}
for (int j=1;j<m;j++) //FIXME perche' questo for e' dentro all'altro???
{ d[rig][j]=j;
cout<<endl;
cout<<d[rig][j]; }
cout<<endl;
}
for (int i=0;i<=n-1;i++) //calcolo di costo
for(int j=0;j<m-1;j++) //FIXME <=
{if (t[j]==s[i])
costo=0;
else costo=1;
cout<<costo;} //FIXME i due cicli dovevano continuare
if ((d(j+1,i)+1)<(d(j,i+1)+1))
min=d(j+1,i)+1;
else if ((d(i,j)+costo)<min); //FIXME evidentemente le piacciono gli else, peccato che anche qua non ci volesse
min=d(i,j)+costo;
return 0;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT