Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
Unhappy Contar cuantas palabras empiezan con May

Hola a todos.. saludos..
saben tengo un problema con esto
se supone que me deveria funcionar..

Código Delphi [-]
 
function ContarMay(s:string):integer;
var pal:string; Letra:char; i,c:integer;
begin
I:=1; pal:=' '; c:=0; s:=s+' ';
    while I <= Length(s) do
    begin
     letra:=s[i];
     if letra <> ' ' then
       pal:=pal+letra
        else
        if length(PAL) > 0 then
          begin
         if  (UPCASE(pal[1]) = pal[1]) then
 //En esta parte se supone que solo tiene q contar la 1ra de una 
            palabra y esa la convierte y pregunta si es = a la 1ra q no esta
            convertida...  ejem  'mama'  si M  = m , no.//
            pero cuenta todo no inporta si esta o no en mayuscula..
             begin
              c:=c+1;
              pal:=' ';
           end;
        end;
    i:=i+1;
    end;
  contarMay:=c;
end;
var
a:cvectors;
tp,i,N:integer;
s:string;
begin
a:=cvectors.crear; Readln(n);
a.dimencionar(n);
  for I := 1 to a.dimencion do
    begin
      readln(s);
      a.poner(i,s);
    end;
Tp:=0;
  for I := 1 to a.dimencion do
    begin
      Tp:=Tp + contarMay(a.elemento(i));
    end;
writeln(Tp);
readln;
end.

Aca con la unit que trabajo

Código Delphi [-]
 
unit unit1;
interface
uses
sysutils;
const
max=50;
type
            CVectorS=class
             S: array[1..max] of string ;
             N: integer;
             constructor crear ;
             procedure dimencionar(dim:integer);
             procedure poner(posi:integer ; que:string);
             procedure mostrar(var s:cvectorS);
             procedure insertar(posi:integer ; st:string);
             function elemento(posi:integer):string;
             function dimencion:integer;
         
implementation

constructor CVectorS.crear;
begin
   N:=0;
end;
function CVectorS.dimencion: integer;
begin
  dimencion:=N
end;
procedure CVectorS.dimencionar(dim: integer);
begin
  N:=dim;
end;
function CVectorS.elemento(posi: integer): string;
begin
  elemento:=s[posi];
end;
 
procedure CVectorS.insertar(posi: integer; st: string);
begin
   s[posi]:=st;
end;
procedure CVectorS.mostrar(var s: cvectorS);
var
  I: Integer;
begin
  for I := 1 to s.Dimencion do
  begin
    write(s.elemento(i):8);
  end;
end;
procedure CVectorS.poner(posi: integer; que: string);
begin
  s[posi]:=que;
end;
end.

quisiera que me diga si esta mal.. oh si hay otra forma mas simple..
oh si estoy pensando mal.. lo que hace upcase..

bueno gracias..
Responder Con Cita
  #2  
Antiguo 21-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
  #3  
Antiguo 23-05-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
Cita:


ups.. lo siento la palabra era mayuscula.. osea..
si la 1era letra de una palabra es mayuscula.. deveria contar..
... lo siento..
Responder Con Cita
  #4  
Antiguo 23-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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:
si la 1era letra de una palabra es mayuscula.. deveria contar..
Entonces es mucho más sencillo...
Código Delphi [-]
function ContarAparicion(Frase: string): Integer;
var
  i: Integer;
  InWord: Boolean;
begin
  Frase:= ' ' + Frase;
  Result:= 0;
  InWord:= False;
  for i:= 1 to Length(Frase)-1 do
  begin
    InWord:= not (Frase[i] in [' ',',','.']);
    if not InWord and (Frase[i+1] in ['A'..'Z']) then
     Inc(Result);
  end;
end;

Llamada:
Código Delphi [-]
...
  Frase:= 'Cuanto maYor seA la lONGITUD de La ConTraseña,' +
  'menor Es la proBABIlidad de que los ataques "por Fuerza brUTa" tengan Exito.';
  ShowMessage(IntToStr(ContarAparicion(Frase))); // Resultado: 6

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 23-05-2011 a las 02:05:09.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
contar numero de palabras en un string lina maria Varios 9 19-05-2008 20:33:50
¿Cuantas Piernas? eduarcol La Taberna 52 06-11-2007 23:25:45
en que linea empiezan los parametros de un query morfeo21 Varios 1 21-09-2006 19:40:45
Cuantas conexiones de red??? Nasio Varios 1 31-05-2004 12:05:06
Hasta los virus se empiezan ha hacer en Delphi __cadetill Noticias 2 01-11-2003 00:20:05


La franja horaria es GMT +2. Ahora son las 17:11:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi