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 (9.5) alcune deviazioni dal testo ed ingenuita' ma per lo piu' corretto
// SANTONE GIOVANNI matr. 153443 , ego1983@libero.it, stud01
// 03/10/2003 FONDAMENTI DI INFORMATICA A - INGEGNERIA ELETTRONICA
#include <iostream.h>
#include <string.h>
int main()
{
int m,n,DL,costo,min;
char s[20],t[20];
cout<<"inserisci la prima stringa: ";
cin.getline(s,20);
cout<<endl;
cout<<"inserisci la seconda stringa: ";
cin.getline(t,20);
cout<<endl;
n=strlen(s);
m=strlen(t);
if (n==0){ cout<<"DL="<<m<<endl;exit(0);}
if (m==0){ cout<<"DL="<<n<<endl;exit(0);}
int d[m+1][n+1];
for (int i=0;i<m+1;i++)
{
for (int j=0;j<n+1;j++) d[i][j]=0; //FIXME a che serve? non era richiesto e comunque in tal caso bastava
// definire la matrice usando int d[m+1][n+1]={};
}
if (n!=0 && m!=0) //FIXME inutile, nel caso il programma e' gia' terminato
{
for (int i=0;i<n+1;i++) d[0][i]=i;
for (int k=0;k<m+1;k++) d[k][0]=k;
for (int i=0; i<n;i++)
{
for(int j=0;j<m;j++)
{
if (s[i]==t[j]) costo=0;
else costo=1;
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;
}
}
}
cout<<"Dl="<<d[m][n];
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT