Ver Mensaje Individual
  #2  
Antiguo 21-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Contar cuantas palabras empiezan con May
Hola Luisito2011.

Confeccioné una función que devuelve la cantidad de apariciones de una palabra determinada dentro de una frase, ignorando mayúsculas / minúsculas. Si bién hay maneras mas simples y elegantes de hacerlo, me remití a usar las funciónes que ví en tu código.
Pero no me ajuste en absoluto a la unidad que adjuntas (que no leí). La intención es acercarte una idea, si la función requiere algún ajuste debido a alguna restricción impuesta por la tarea, te queda a vos ver como implementarla.

Código Delphi [-]
function ContarAparicion(Frase, Palabra: string): Integer;
var
  i,c: Integer;
  s: string;
begin
  Frase:= ' ' + Frase; 
  Result:= 0;
  for i:= 1 to Length(Frase) do
  begin
    if Frase[i] in[' ',',','.','(','"'] then //caracteres contemplados como inicio de palabra
    begin
      c:= i + 1;
      while UpCase(Frase[c]) = UpCase(Palabra[c-i]) do Inc(c);
      if c - i - 1 = Length(Palabra) then 
        Inc(Result);
    end;
  end;
end;

Ejemplos de llamada:
Código Delphi [-]
var
  Frase, Palabra: string;
begin
  Frase:= 'En Mayo comen mayonesa mayormente los mayores';
  Palabra:='may';
  ShowMessage(IntToStr(ContarAparicion(Frase,Palabra))); // resultado: 4
  Frase:= 'Unicamente una soga unia los árboles ';
  Palabra:= 'un';
  ShowMessage(IntToStr(ContarAparicion(Frase,Palabra))); // resultado: 3
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita