ciao amici,
mi trovo a scrivere un programma per il calcolo della distanza con l'algoritmo di levenshtein, questo il codice:
ottengo però errori di compilazione, in particolare quando esplicito d, la matrice, il compilatore se ne esce con:codice:#include <stdlib.h> #include <malloc.h> #include <string.h> #include <iostream.h> #include <stdio.h> int levenshtein_distance(char *s,char *t); int minimo(int a,int b,int c); /* funzione di levenshtein */ int levenshtein_distance(char *s,char *t) { /* definizione delle variabili */ int k; int i; int j; int n; int m; int cost; int *d; int distance; /* inserisco in n e m il valore della lunghezza delle stringhe s e t */ n=strlen(s); m=strlen(t); if(n!=0 && m!=0) { /* alloco la memoria per una matrice di dimensione (m*n) */ d = malloc((sizeof(int))*(m+1)*(n+1)); m = m+1; n = n+1; /* inizializzo la matrice */ for(k=0;k<n;k++) d[k]=k; for(k=0;k<m;k++) d[k*n]=k; /* faccio i confronti con le due stringhe */ for(i=1;i<n;i++) for(j=1;j<m;j++) { /* se il carattere di STRINGA1 è uguale al carattere di STRINGA 2 */ /* allora COSTO = 0, altrimenti lo incremento e COSTO = 1 */ if(s[i-1]==t[j-1]) cost=0; else cost=1; /* calcola la distanza */ d[j*n+i]=minimo(d[(j-1)*n+i]+1,d[j*n+i-1]+1,d[(j-1)*n+i-1]+cost); } /* assegna la distanza a distance */ distance=d[n*m-1]; /* ripulisce la matrice d */ free(d); /* ritorna il valore distanza */ return distance; } else return -1; } int minimo(int a,int b,int c) /* funzione che calcola il minimo di 3 valori */ { int min=a; if(b<min) min=b; if(c<min) min=c; return min; } int main () { char stringa1; char stringa2; cout << "INSERIRE LE STRINGHE: \n" << gets(stringa1), gets(stringa2); cout << "LA DISTANZA VALE: " << levenshtein_distance(stringa1,stringa2) << endl; return 0; }
cannot convert from 'void *' to 'int *'
ed altri problemi di conversione li ho nel main, al gets
gets' : cannot convert parameter 1 from 'char' to 'char *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
sapete per cortesia darmi una mano?
grazie![]()

Rispondi quotando