Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Prepa305001 en 20 Julio 2019, 21:02 pm



Título: Escriba un programa en c que diga si el dato dado es un numero una letrao signo
Publicado por: Prepa305001 en 20 Julio 2019, 21:02 pm
como le hago para detectar los signos y que los cuente

#include <stdio.h>
#include <ctype.h>
#include <string.h>



int main()

{
    char cadena[50];
    char numeros[50];
    char texto[50];
    char signos;

    int z,i, j, k;

    signos=0;
    printf("escribe algo mixto: ");
    scanf("%s",cadena);
    for(i = 0, j = 0, k = 0; i < strlen(cadena); i++)
    {
        if( isdigit( cadena ) )
            numeros[j++] = cadena;

        else if (isalpha(cadena))
          texto[k++] = cadena;
            else
            signos += cadena;
    }

    numeros[j] =0;
    texto[k]=0;
    printf("\nnumeros %s",numeros);
        printf("\ntexto %s",texto);
        printf("\nla cantidad de letras son %i", k);
        printf("\nla cantidad de numeros son %i", j);
           printf("\nla cantidad de signos son %i", z);
    return 0;
}




Título: Re: Escriba un programa en c que diga si el dato dado es un numero una letrao signo
Publicado por: @XSStringManolo en 20 Julio 2019, 23:41 pm
Código
  1. if (caracter == numeros || caracter == letras)
  2. {
  3. if (caracter == numeros)
  4.    {
  5.    //El caracter es un numero.
  6.    }
  7.  
  8.    else
  9.    {
  10.    //El caracter es una letra
  11.    }
  12. }
  13. else
  14. {
  15. //es un simbolo.
  16. ++contadorSimbolos;
  17. }

Usas un bucle para comparar cada caracter con todos los números y todas las letras. Si no coincide es un símbolo o una letra acentuada.

Yo personalmente usaria bucles for y un array de chars para los números y otro array de chars con las letras.
Comparas el caracter a comprobar con todos los elementos del array numeros, que serán 0,1,2,3,4,56,7,8,9
Y comparas el caracter a comprobar con todos los elementos del array letras, que serán a,b,c,d,...z,A,B,...Z

Puedes usar booleanos como variables globales declarados como false para identificar si es una letra o un número.
Código
  1. int i =0;
  2. while (i != tamanhoDelArrayLetras)
  3. {
  4.   if (caracter == numero[i])
  5.   {
  6.      booleanoEsUnNumero = true;
  7.      break;
  8.   }
  9.  
  10.   if (caracter == letra[i])
  11.   {
  12.      booleanoEsUnaLetra = true;
  13.      break;
  14.   }
  15. ++i;
  16. }
  17.  
  18. if (booleanoEsUnaLetra == false && booleanoEsUnNumero == false)
  19. {
  20.   //El caracter es un simbolo
  21.   ++contadorSimbolos;
  22. }