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: 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 (3) 5 cicli nidificati cono solo due variabili!
//<PINTO> <ANGELO> <150417>, <pinto_angelo@jumpy.it> <stud12>

// <03/10/03> - esame di Fondamenti di Informatica A, corso di laurea in Ingegneria Informatica




#include <iostream.h>
#include <string.h>
#include <stdio.h>



int main(){

  char s[21]; //lunghezza della stringa 20 caratteri

  char t[21]; //lunghezza della stringa 20 caratteri

  int n,m,i,j,costo,min,prova,prova2,prova3;
  cout<<"Inserire la stringa s: ";
  cin.getline(s,21);
  cout<<"Inserire la stringa t: ";
  cin.getline(t,21);
  n = strlen(s);
  m = strlen(t);
  if (n==0) cout << "La distanza di Levenshtein e'"<<m; //FIXME si' ma poi doveva anche far terminare il programma

  if (m==0) cout << "La distanza di Levenshtein e'"<<n; //FIXME si' ma poi doveva anche far terminare il programma


  int d[n+1][m+1];

  for (i=0;i<=n;i++)
    for(j=0;j>=m;j++)
      for(i=0,j=0;d[i][j];i++,j++)
      {
  for (i=0; i<n-1 ;i++)
    for (j=0; j<m-1; j++)  //FIXME 5 cicli nidificati con solo due variabili! Mi dispiace ma non funziona

      if (s[i]==t[j]) costo=0;
      else costo=1;
      prova=d[j+1][i]+1;
      prova2=d[j][i+1]+1;
      prova3=d[j][i]+costo;
      min=prova;
      if (prova2<min) min=prova2;
      if (prova3<min) min=prova3; //XXX il caclolo del minimo era anche corretto

      d[j+1][i+1]=min;
      }
  cout << "La distanza di Levenshtein e' "<<d[m][n];
  return 0;
}







Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a bertozzi@CE.UniPR.IT