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 (6) segue il filo ma va fuori testo sia nell'inizializzazione matrice che nella selezione risultato
// Egidio D'Elia, 138217, gigi.delia@katamail.com, DIS07
// 03/10/03 - Esame di Fondamenti di Informatica A, corso di laurea in Ingegneria Informatica
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
int min (int &, int &, int &);
main(){
int DL;
char s[20], t[20];
cout<<"Inserire due stringhe al max di 20 caratteri: "<<endl;
cin.getline(s, 20);
cin.getline(t, 20);
int n=strlen(s);
int m=strlen(t);
if (n==0){
DL=m;
cout<< DL <<endl;
exit (1);
}
else if (m==0){ //FIXME questo else NON ci vuole
DL=n;
cout<< DL <<endl;
exit (2);
}
char d[21][21];
unsigned short i, j, costo;
for (i=0;i<=n;i++)
d[0][i]=s[i]; //FIXME nel testo era differente!
for (j=0;j<=m;j++)
d[j][0]=t[j]; //FIXME come sopra
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
if (s[i]==t[j])
costo=0;
else costo=1;
int x=d[j+1][i]+1, y=d[j][i+1]+1, z=d[j][i]+costo;
int minimo=min(x,y,z);
d[j+1][i+1]=minimo;
}
DL=d[j+1][i+1]; //FIXME il testo diceva di prendere la cella di coordinate m ed n, non era vietato fare altrimenti ma
// nel suo caso ha sbagliato
cout<< "DL= "<< DL <<endl;
return 0;
}
int min (int &x, int &y, int &z){ //FIXME l'utilizzo dei riferimenti ove non necessario e' sbagliato
int temp;
if (x<y)
temp=x;
else temp=y;
if (temp<z)
return temp;
else return z;
}
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a
bertozzi@CE.UniPR.IT