Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Calcolo della distanza di Levenshtein tra due stringhe - LEVENSTH.PAS

LEVENSTH.PAS

Caricato da: Progman-92
Scarica il programma completo

  1. program Distanza_di_Levenshtein;
  2. uses crt,strings;
  3.   const can: byte=1;
  4.         inseri: byte=1;
  5.   var distanza: array [0..100,0..100] of byte;
  6.       sostit,c1,c2,c3: byte;
  7.       str1,str2: array[0..50] of char;
  8.       i, z, risp: integer;
  9.  
  10.  function min(a,b,c: byte): byte;
  11.   begin
  12.    if a>b then
  13.     if b>c then
  14.      min:=c
  15.     else min:=b
  16.    else
  17.     if a>c then
  18.      min:=c
  19.     else min:=a;
  20.   end;
  21.  
  22. begin
  23.  repeat
  24.  clrscr;
  25.  textcolor(lightgreen);
  26.  gotoxy(7,2);
  27.  writeln('Questo programma calcola la distanza di Levenshtein tra due stringhe');
  28.  writeln;
  29.  writeln;
  30.  writeln('Inserisci la prima stringa');
  31.  write('Stringa1=');
  32.  readln(str1);
  33.  writeln;
  34.  writeln('Inserisci la seconda stringa');
  35.  write('Stringa2=');
  36.  readln(str2);
  37.  for i:=0 to strlen(str1) do
  38.  begin
  39.   distanza[0,i]:=i;
  40.  end;
  41.  for i:=0 to strlen(str2) do
  42.  begin
  43.   distanza[i,0]:=i;
  44.  end;
  45.  for i:=1 to strlen(str1) do
  46.   for z:=1 to strlen(str2) do
  47.    begin
  48.     if str1[i-1]=str2[z-1] then
  49.      sostit:=0
  50.     else sostit:=1;
  51.     c1:= distanza[i-1,z-1]+sostit;
  52.     c2:= distanza[i,z-1]+can;
  53.     c3:= distanza[i-1,z]+inseri;
  54.     distanza[i,z]:=min(c1,c2,c3);
  55.    end;
  56.  writeln;
  57.  for z:= 1 to 80 do write(char(205));
  58.  writeln;
  59.  writeln('La Distanza di Levenshtein ',distanza[strlen(str1),strlen(str2)]);
  60.  gotoxy(20,20);
  61.  textcolor(25);
  62.  write('Premere 1 per continuare, 0 per uscire=');
  63.  readln(risp)
  64.  until
  65.  risp = 0;
  66. end.