Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Contador de letras, numeros, espacios, etc.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Contador de letras, numeros, espacios, etc. Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: error y modificacion Responder citando

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
Mensaje    Asunto: Responder citando

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. Shocked
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: error Responder citando

Sorry el mensaje anterior soy yo leon711 por favor ayudame es un trabajo de escuela, gracias
Volver arriba
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Gracias Responder citando

Gracias Tugui me sirvio el programa te agradezco mucho, un saludo y una vez mas gracias.
Volver arriba
Mensaje    Asunto: Responder citando

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 Wink

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Gracias Responder citando

También me sirvio el programa gracias también LordNemesis, conoci otra forma jeje gracias, saludos hasta pronto
Volver arriba
Mensaje    Asunto: Pequeños Errores Responder citando

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 Very Happy
Volver arriba
Mensaje    Asunto: Responder citando

Ups... lo siento, es que lo escribi directamente en el post y no lo probé jeje Embarassed pero ya esta corregido, saludos
_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.