|
program Distanza_di_Levenshtein;
uses crt,strings;
const can: byte=1;
inseri: byte=1;
var distanza: array [0..100,0..100] of byte;
sostit,c1,c2,c3: byte;
str1,str2: array[0..50] of char;
i, z, risp: integer;
function min(a,b,c: byte): byte;
begin
if a>b then
if b>c then
min:=c
else min:=b
else
if a>c then
min:=c
else min:=a;
end;
begin
repeat
clrscr;
textcolor(lightgreen);
gotoxy(7,2);
writeln('Questo programma calcola la distanza di Levenshtein tra due stringhe');
writeln;
writeln;
writeln('Inserisci la prima stringa');
write('Stringa1=');
readln(str1);
writeln;
writeln('Inserisci la seconda stringa');
write('Stringa2=');
readln(str2);
for i:=0 to strlen(str1) do
begin
distanza[0,i]:=i;
end;
for i:=0 to strlen(str2) do
begin
distanza[i,0]:=i;
end;
for i:=1 to strlen(str1) do
for z:=1 to strlen(str2) do
begin
if str1[i-1]=str2[z-1] then
sostit:=0
else sostit:=1;
c1:= distanza[i-1,z-1]+sostit;
c2:= distanza[i,z-1]+can;
c3:= distanza[i-1,z]+inseri;
distanza[i,z]:=min(c1,c2,c3);
end;
writeln;
for z:= 1 to 80 do write(char(205));
writeln;
writeln('La Distanza di Levenshtein Š ',distanza[strlen(str1),strlen(str2)]);
gotoxy(20,20);
textcolor(25);
write('Premere 1 per continuare, 0 per uscire=');
readln(risp)
until
risp = 0;
end.
|
|