 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
leon711 Invitado
|
Publicado: Dom 05 Sep, 2004 7:52 am Asunto: Contador de letras, numeros, espacios, etc. |
|
|
| Hola, necesito hacer un programa que me devuelva de una frase cuantas letras, numeros, espacios en blanco y simbolos alfanumericos tiene dicha frase; si alguien me puede ayudar se los agradeceria mucho, les mando un saludo y de antemano gracias. |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Dom 05 Sep, 2004 11:13 am Asunto: |
|
|
En un proyecto en blanco he puesto un TEdit, un TButton y un TMemo, y en OnClick() del botón esto:
| Código: |
if (Edit1->Text!=""){
int letras,espacios,numeros,total_simbolos;
letras =0;
espacios=0;
numeros=0;
total_simbolos = 0;
int longitud = Edit1->Text.Length();
for (int i=0;i<=longitud;i++){
AnsiString caracter = Edit1->Text.SubString(i,1);
try {
if (caracter.ToInt()>=0){
numeros++;
}
}
catch(EConvertError &E){
if (caracter == " "){
espacios++;
}
else {
letras++;
}
}
}
total_simbolos = (longitud)-espacios;
Memo1->Lines->Add("Letras: "+IntToStr(letras-1)+".");
Memo1->Lines->Add("Números: "+IntToStr(numeros)+".");
Memo1->Lines->Add("Espacios: "+IntToStr(espacios)+".");
Memo1->Lines->Add("Total de símbolos alfa-numéricos: "+IntToStr(total_simbolos)+".");
}
|
Seguro que se puede mejorar pero espero que te sirva para empezar. Saludos. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
leon711 Invitado
|
Publicado: Lun 06 Sep, 2004 8:11 pm Asunto: error y modificacion |
|
|
| Hola gracias por el programa anterior pero me genera un error que no es posible convertir a caracter entonces quisiera que me ayudaras por fa, pero ahora osea en vez de contar letras osea si pero que me definiera cuantas vocales y consonantes son y también cuantos digitos ademas de lo que ya tiene si no fuera mucha molestia se los pediria de favor solo con edit, memo y con button normal, o decirme donde descargar los TButton, TMemo y los TEdit gracias... |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Lun 06 Sep, 2004 8:47 pm Asunto: |
|
|
| Cita: |
o decirme donde descargar los TButton, TMemo y los TEdit gracias...
|
Lo siento pero no te entiendo muy bién, ¿no utilizas el c++Builder?
El TButton, el TMemo y TEdit los he insertado desde el propio IDE del programa.  _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 07 Sep, 2004 12:05 am Asunto: |
|
|
| Si lo siento fue un error técnico de mi parte, pero como quiera sigo teniendo el problema ese de que me marca error al compilar el proyecto ademas que ahora me gustaria qe ademas contara cada las volales y consonantes y disculpa mi tonto error, te envio un saludo Tugui y gracias una vez mas. Y te felicito por contribuir al desarrollo de este foro... |
|
| Volver arriba |
|
 |
leon711 Invitado
|
Publicado: Mar 07 Sep, 2004 6:49 am Asunto: error |
|
|
| Sorry el mensaje anterior soy yo leon711 por favor ayudame es un trabajo de escuela, gracias |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 07 Sep, 2004 2:52 pm Asunto: |
|
|
Bueno... no se si me queda todo lo bién que debería pero a mi me funciona. Te he modificado un poco el código anterior para que ahora también nos de el número de vocales y consonantes:
| Código: |
if (Edit1->Text!=""){
int letras,espacios,numeros,total_simbolos,vocales,consonantes;
letras =0;
espacios=0;
numeros=0;
total_simbolos = 0;
vocales =0;
consonantes=0;
int longitud = Edit1->Text.Length();
for (int i=1;i<=longitud;i++){
AnsiString caracter = Edit1->Text.SubString(i,1);
try {
if (caracter.ToInt()>=0){
numeros++;
}
}
catch(EConvertError &E){
if (caracter == " "){
espacios++;
}
else {
letras++;
//seguidamente averiguamos si es vocal o consonante:
if ( (caracter=="a")||(caracter=="e")||(caracter=="i")||
(caracter=="o")||(caracter=="u")||(caracter=="A")||
(caracter=="E")||(caracter=="I")||(caracter=="O")||
(caracter=="U")||
(caracter=="á")||(caracter=="é")||(caracter=="í")||
(caracter=="ó")||(caracter=="ú")||(caracter=="Á")||
(caracter=="É")||(caracter=="Í")||(caracter=="Ó")||
(caracter=="Ú") ){
vocales++;
}
else {
consonantes++;
}
}
}
}
total_simbolos = (longitud)-espacios;
Memo1->Lines->Add("Letras: "+IntToStr(letras)+".");
Memo1->Lines->Add("Números: "+IntToStr(numeros)+".");
Memo1->Lines->Add("Espacios: "+IntToStr(espacios)+".");
Memo1->Lines->Add("Total de símbolos alfa-numéricos: "+IntToStr(total_simbolos)+".");
Memo1->Lines->Add("Vocales: "+IntToStr(vocales)+".");
Memo1->Lines->Add("Consonantes: "+IntToStr(consonantes)+".");
}
|
En cuanto al error que me dices que te da al compilar sospecho que te lo da porque ejecutas el código desde el entorno de desarrollo, los códigos que poseen estructuras try - catch y entran en ellas muestran siempre excepciones si se compilan en el entorno de desarrollo. Para probar si realmente funciona haz lo siguiente:
1º -Ejecuta el proyecto desde el entorno de desarrollo pero NO pulses el botón que ejecuta nuestro código.
2º -Cierra la aplicación que se está ejecutando.
3º -Ejecuta el archivo ejecutable de tu proyecto directamente desde el explorador de windows y comprueba que esta vez no te de errores.
Si no te da errores ejecutándolo desde fuera del entorno de desarrollo puedes continuar el trabajo sin problemas, si los errores siguen pues algo hemos hecho mal.
Suerte. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Leon711 Invitado
|
Publicado: Mar 07 Sep, 2004 8:42 pm Asunto: Gracias |
|
|
| Gracias Tugui me sirvio el programa te agradezco mucho, un saludo y una vez mas gracias. |
|
| Volver arriba |
|
 |
LordNemesis Master


Registrado: 31 Dic 2003Mensajes: 340Ubicación: México
|
Publicado: Jue 09 Sep, 2004 4:02 pm Asunto: |
|
|
Saludos... aqui te pongo otra forma que puede funcionar aun sin la VCL... no lo he calado pero en teoria debe funcionar...
| Código: |
#include <locale>
void Contador(char *texto,int &letras,int &numeros, int &espacios, int &simbolos)
{
letras =0;numeros=0;espacios=0;simbolos=0;
for(;*texto;)
{
if(isalpha(*texto))
letras++;
else
if(isdigit(*texto))
numeros++;
else
if(*texto==' ')
espacios++;
else
simbolos++; //si no es ni letras, ni digito, ni espacio, debera ser un simbolo
texto++;
}
}
|
y la forma de probarlo usando la VCL seria....
| Código: |
int l,n,e,s;
Contador(Edit1->Text.c_str(),l,n,e,s);
Memo1->Lines->Add("Letras: "+AnsiString(l));
Memo1->Lines->Add("Numeros: "+AnsiString(n));
Memo1->Lines->Add("Espacios: "+AnsiString(e));
Memo1->Lines->Add("Simbolos: "+AnsiString(s));
|
De esta manera, ya lo tienes mas modulado y lo puedes usar para cualquier programa que lo necesites nada mas mandandolo llamar
Espero te haya servido.... saludos _________________ Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Ultima edición por LordNemesis el Vie 10 Sep, 2004 4:40 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Leon711 Invitado
|
Publicado: Vie 10 Sep, 2004 2:16 am Asunto: Gracias |
|
|
| También me sirvio el programa gracias también LordNemesis, conoci otra forma jeje gracias, saludos hasta pronto |
|
| Volver arriba |
|
 |
Leon711 Invitado
|
Publicado: Vie 10 Sep, 2004 2:42 am Asunto: Pequeños Errores |
|
|
Se me olvido mencionar que cambie la forma de probarlos osea el nombre porque pues todo decia "Letras"
Memo1->Lines->Add("Letras: "+AnsiString(l));
Memo1->Lines->Add("Letras: "+AnsiString(n));
Memo1->Lines->Add("Letras: "+AnsiString(e));
Memo1->Lines->Add("Letras: "+AnsiString(s));
y lo que cambie fue
Memo1->Lines->Add("Letras: "+AnsiString(l));
Memo1->Lines->Add("Números: "+AnsiString(n));
Memo1->Lines->Add("Espacios: "+AnsiString(e));
Memo1->Lines->Add("Simbolos: "+AnsiString(s));
Otra cosa es que en el tercer if hay un parentesis de más if(*texto==' ')) debe de ir solo así:
if(*texto==' ')
Y lo ultimo es que aqui le falta un punto y coma
simbolos++ quedaria asi:
simbolos++;
Eso es todo un saludo de nuevo jejeje  |
|
| Volver arriba |
|
 |
LordNemesis Master


Registrado: 31 Dic 2003Mensajes: 340Ubicación: México
|
Publicado: Vie 10 Sep, 2004 4:41 pm Asunto: |
|
|
Ups... lo siento, es que lo escribi directamente en el post y no lo probé jeje pero ya esta corregido, saludos _________________ Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!! |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|