Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alpha-X

Comparação de duas Strings

Recommended Posts

Olá pessoal, tenho um array String e preciso fazer uma busca para encontrar a palavra que seja mais similar a palavra digitada pelo usuário.Tentei algumas funções mas nao consegui o que quero, alguem pode me dar uma sujestão de como resolver isso?[]sAlpha-X

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelatentativa, amigo, mas eu ja usei a pesquisa e nao achei nada relacionado ao assunto no site.O que eu preciso fazer é mais ou menos um interpretador de comandos que verifica se houve um erro de digitação, como ocorre no google (você quis dizer...).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu criei essa função que usa pontos para medir o nivel de semelhança entre os comandos, não está 100%, se alguem tiver uma idéia melhor...

 

function NivelSemelhanca(ComandoA, ComandoB: String): Integer;var	 Pontos, I, J, LetComandoA, LetComandoB: Integer;	 Pontuou: Boolean;begin	 Pontuou := False;	 Pontos := 0;	 LetComandoA := Length(ComandoA);	 LetComandoB := Length(ComandoB);	 //Fase1 - Verifica as letras iniciais e finais	 if LetComandoB > 3 then begin		  if ComandoA[1] = ComandoB[1] then begin			   Pontos := 15;		  end		  else begin			   if ComandoA[LetComandoA] = ComandoB[LetComandoB] then begin					Pontos := 15;			   end;		  end;		  if ComandoA[1] = ComandoB[1] then begin			   Pontos :=25;		  end;		  //Fase2 - verifica letra por letra nas mesmas posições		  for I := 1 to LetComandoA do begin			   if ComandoA[I] = ComandoB[I] then begin					Pontos := Pontos+1;					if Pontuou then begin						 Pontos := Pontos+15;					end;					Pontuou := True			   end			   else begin					Pontuou := False;			   end;		  end;		  //Fase3 - verifica letra por letra variando posições no comandoA		  J := 1;		  Pontuou := False;		  for I := 1 to LetComandoA do begin			   if ComandoA[J] = ComandoB[I] then begin					Pontos := Pontos+1;					if Pontuou then begin						 Pontos := Pontos+15;					end;					J := J+1;					Pontuou := True			   end			   else begin					Pontuou := False;			   end;		  end;		  //Fase4 - verifica letra por letra variando posições no comandoB		  J := 1;		  Pontuou := False;		  for I := 1 to LetComandoA do begin			   if ComandoA[I] = ComandoB[J] then begin					Pontos := Pontos+1;					if Pontuou then begin						 Pontos := Pontos+15;					end;					J := J+1;					Pontuou := True			   end			   else begin					Pontuou := False;			   end;		  end;	 end;	 //retorna a quantidade de pontos, qto mais pontos somados maior o grau de semelhança entre as palavras	 Result := Pontos;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.