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 09-11-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Ayuda con tMemo

hola a todos
mi consulta es la siguiente tengo este projecto en la universidad
colocar un memo y un boton, cuando pulse el boton debe demostrar un mensaje informado la cantidad de letras, vocales y consonantes.

nunca e usado el componente TMemo porfavor ayuden me en esto...


gracias de antemano por su ayuda
Responder Con Cita
  #2  
Antiguo 09-11-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La propiedad Text del TMemo contiene todo el texto en un string. Sólo tienes que recorrer la cadena y examinar cada caracter para saber si es vocal o consonante.

// Saludos
Responder Con Cita
  #3  
Antiguo 09-11-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Cita:
Empezado por roman Ver Mensaje
La propiedad Text del TMemo contiene todo el texto en un string. Sólo tienes que recorrer la cadena y examinar cada caracter para saber si es vocal o consonante.

// Saludos
disculpe pero no entiendo me puede demostrar un codigo
Responder Con Cita
  #4  
Antiguo 09-11-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
A lo que Roman se refiere, es que tienes que hacer un ciclo for:
Cita:
Desde 1 hasta la última línea del memo
Desde la primer letra hasta la última de la línea
si es vocal entonces
vocales mas uno
si no
consonantes mas uno

Muestras total que es igual a las consonantes mas las vocales
Muestras vocales y muestras consonantes
Algo así.. mas o menos... me quedaría la duda de como manejar los caracteres especiales en caso de que existiera alguno, pero si como mencionas, es tarea de tu escuela, pues no creo que haya que preocuparse por eso.

La propiedad Lines del Memo y su propiedad Count te pueden servir de mucho.

Saludos.

Edito... como que me distraje... Roman propone algo más sencillo... yo me quedé pensando en ir línea por línea, pero ciertamente es más sencillo recorrer el texto como menciona Roman...
__________________


Última edición por ContraVeneno fecha: 09-11-2010 a las 18:04:10.
Responder Con Cita
  #5  
Antiguo 09-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Wink

Hola.

Si el memo se llama Memo1, obtienes con la propiedad Text todo el contenido del memo de esta forma Memo1.Text

Lo que haría sería utilizar un bucle "For". Busca en las ayudas y verás como hacerlo. En la práctica, escribe For y luego pulsa Ctrl+J, cuando te aparezcan varias opciones, pulsa directamente Enter y te escribirá casi todo el código.
  • Tienes que declarar 3 variables integer y 1 string.
  • Asigna el contenido de Memo1.text a la variable string.
  • Recorre cada uno de los caracteres de la variable string con el bucle "For". Si la variable es "a" para conocer cual es el tercer caracter usarías "a[3]". Puedes sustituir el valor 3 por el valor de la variable del "For".
  • Ojea en las ayudas Length, pues te será necesario.
  • Comprueba si cada caracter está incluido entre las vocales, consonantes y lo que te hayan pedido. Para ello, por ejemplo, pondría el caracter en minúscula, y vería si está incluido en una cadena con todas las vocales ('aeiou') en minúscula. Para hacer esto, busca en las ayudas las funciones Lowercase y pos.
  • Si está contenido, utiliza if...then (ojea las ayudas) para incrementar el contador de vocales (una de la variables integer).
  • Lo mismo harías con las consonantes.
  • Finalmente presenta el resultado con un mensaje. Ojea en las ayudas Showmessage y InttoStr.

Creo que con toda esta información y un par de ratos que le dediques, lo tienes resuelto.

Espero que te sirva.

Recibe un saludo.
Responder Con Cita
  #6  
Antiguo 09-11-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Cita:
Empezado por rrf Ver Mensaje
Hola.

Si el memo se llama Memo1, obtienes con la propiedad Text todo el contenido del memo de esta forma Memo1.Text

Lo que haría sería utilizar un bucle "For". Busca en las ayudas y verás como hacerlo. En la práctica, escribe For y luego pulsa Ctrl+J, cuando te aparezcan varias opciones, pulsa directamente Enter y te escribirá casi todo el código.
  • Tienes que declarar 3 variables integer y 1 string.
  • Asigna el contenido de Memo1.text a la variable string.
  • Recorre cada uno de los caracteres de la variable string con el bucle "For". Si la variable es "a" para conocer cual es el tercer caracter usarías "a[3]". Puedes sustituir el valor 3 por el valor de la variable del "For".
  • Ojea en las ayudas Length, pues te será necesario.
  • Comprueba si cada caracter está incluido entre las vocales, consonantes y lo que te hayan pedido. Para ello, por ejemplo, pondría el caracter en minúscula, y vería si está incluido en una cadena con todas las vocales ('aeiou') en minúscula. Para hacer esto, busca en las ayudas las funciones Lowercase y pos.
  • Si está contenido, utiliza if...then (ojea las ayudas) para incrementar el contador de vocales (una de la variables integer).
  • Lo mismo harías con las consonantes.
  • Finalmente presenta el resultado con un mensaje. Ojea en las ayudas Showmessage y InttoStr.
Creo que con toda esta información y un par de ratos que le dediques, lo tienes resuelto.

Espero que te sirva.

Recibe un saludo.
esto es lo que yo e logrado esta hora

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 i,cont:Integer;
begin
Cont := Length( Memo1.Text);
 ShowMessage('La cantidad de letras escritas son: '+(IntToStr(Cont)));
  end;

end.

no e podido lo de las vocales y consonantes
Responder Con Cita
  #7  
Antiguo 09-11-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
hasta ahí vas bien... ahora sigue hacer un ciclo For para recorrer el texto.

Desde i = 0 hasta cont -1
__________________

Responder Con Cita
  #8  
Antiguo 09-11-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
hasta ahí vas bien... ahora sigue hacer un ciclo For para recorrer el texto.

Desde i = 0 hasta cont -1
disculpe la molestia me pudes ayudar con el codigo estoy bloquiado y debo entregar este projecto hoy

gracia mil
Responder Con Cita
  #9  
Antiguo 09-11-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola. ¿Qué carrera estudias y en que grado vas?

Algo de seudocódigo:

Código:
Vocales = 0
Consonantes = 0

Ciclo para recorrer la variable I desde 1 hasta la longitud de Memo1.Text
  Si el carácter de la posición I de Memo1.Text es vocal entonces:
    Incrementar en uno la variable Vocales
  Else
    Si el carácter de la posición I de Memo1.Text es consonante entonces:
      Incrementar en uno la variable Consonantes
Responder Con Cita
  #10  
Antiguo 09-11-2010
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
Hola Chino150.

Te doy una ayudita como evaluar las vocales dentro del for...

Código Delphi [-]
 if Upcase(Memo1.Text[i]) in ['A','E','I','O','U','Á','É','Í','Ó','Ú'] then
     Inc(NumVoc);  // NumVoc: variable de tipo Integer que acumula número de vocales

Saludos.
Responder Con Cita
  #11  
Antiguo 09-11-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Hola. ¿Qué carrera estudias y en que grado vas?

Algo de seudocódigo:

Código:
Vocales = 0
Consonantes = 0
 
Ciclo para recorrer la variable I desde 1 hasta la longitud de Memo1.Text
  Si el carácter de la posición I de Memo1.Text es vocal entonces:
    Incrementar en uno la variable Vocales
  Else
    Si el carácter de la posición I de Memo1.Text es consonante entonces:
      Incrementar en uno la variable Consonantes
estudio ingeneria informatica y estoy en secundo semestre
Responder Con Cita
  #12  
Antiguo 09-11-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Yo te voy a dar otra ayudita para saber si un caracter es vocal o consonante.
Lo mejor que veo es declarase algunas constantes de esta forma:
Código Delphi [-]
const
Alfabeto=['A'..'Z'];
Vocales=['A','E','I','O','U','Á','É','Í','Ó','Ú'];
Consonantes=Alfabeto-Vocales;
De esa forma el código propuesto por ecfisa queda de la siguiente manera:
Código Delphi [-]
if Upcase(Memo1.Text[i]) in Vocales then //<-Vocales ya está definido arriba
     Inc(NumVoc);  // NumVoc: variable de tipo Integer que acumula número de vocales
Para el caso de las consonantes la condicion sería así:
Código Delphi [-]
if Upcase(Memo1.Text[i]) in Consonantes then //<-Consonantes ya está definido arriba
     Inc(NumConso);  // NumConso: variable de tipo Integer que acumula número de consonantes
Creo que ya te lo hemos hecho todo...amigo chino150.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 09-11-2010 a las 22:36:00.
Responder Con Cita
  #13  
Antiguo 09-11-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Esto es lo que e logrado gracias a su ayuda

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 i,cont,numVoc, numConso :Integer;
 const
 Alfabeto=['A'..'Z'];
 Vocales=['A','E','I','O','U','Á','É','Í','Ó','Ú'];
 Consonantes=Alfabeto-Vocales;
begin
NumVoc := 0;
NumConso := 0;
for i:= 0 to Length(Memo1.Text) - 1 do begin
 if UpCase(Memo1.Text[i]) in Vocales then
 Inc(NumVoc);
 if UpCase(Memo1.Text[i]) in Consonantes then
  Inc(NumConso);
Cont := Length( Memo1.Text);
 ShowMessage(' letras: '+(IntToStr(Cont)) + ' Vocales: '  + (IntToStr(NumVoc))  +'Consonantes:  '+ (IntToStr(NumConso))); ;
  end;
    end;
end.
pero debo de darle varios click al boton del mensaje para llegar al resultado final.
Responder Con Cita
  #14  
Antiguo 09-11-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por chino150 Ver Mensaje
Esto es lo que e logrado gracias a su ayuda
...
...
...
pero debo de darle varios click al boton del mensaje para llegar al resultado final.
El problema que veo es que el ShowMessage lo has puesto dentro del ciclo for; la idea principal es que primero se ejecute el ciclo(se haga todo el calculo necesario para saber la cantidad de vocales,consonantes,etc) y al final recien se muestre los resultados, fuera del ciclo for.
De ésta manera:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 i,cont,numVoc, numConso :Integer;
 const
 Alfabeto=['A'..'Z'];
 Vocales=['A','E','I','O','U','Á','É','Í','Ó','Ú'];
 Consonantes=Alfabeto-Vocales;
begin
NumVoc := 0;
NumConso := 0;
for i:= 0 to Length(Memo1.Text) - 1 do begin //<- aqui empieza el ciclo for
 if UpCase(Memo1.Text[i]) in Vocales then
 Inc(NumVoc);
 if UpCase(Memo1.Text[i]) in Consonantes then
  Inc(NumConso);
  end;//<-Aqui termina el ciclo for 
Cont := Length( Memo1.Text);
 ShowMessage(' letras: '+(IntToStr(Cont)) + ' Vocales: '  + (IntToStr(NumVoc))  +'Consonantes:  '+ (IntToStr(NumConso))); ;
    end;
end.
Nota: seguro está que tu código se puede optimizarlo mejor, pero como eres nuevo en programacion no te voy a exigir demasiado.
Saludos..
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 09-11-2010 a las 22:33:52.
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
Ir al final de un Tmemo jlrbotella API de Windows 3 05-05-2008 20:03:41
¿TMemo ..? Ledian_Fdez C++ Builder 4 21-06-2007 15:14:25
Tmemo gontxalo OOP 1 30-07-2005 12:01:43
Ayuda con el uso del TMemo Luli Varios 3 29-05-2005 18:05:27
Uso de TMemo Luli Varios 3 21-04-2005 22:15:15


La franja horaria es GMT +2. Ahora son las 04:06:13.


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