Escriba un programa en c que diga si el dato dado es un numero una letrao signo

Iniciado por Prepa305001, 20 Julio 2019, 21:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Prepa305001

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;
}



@XSStringManolo

if (caracter == numeros || caracter == letras)
{
if (caracter == numeros)
   {
   //El caracter es un numero.
   }

   else
   {
   //El caracter es una letra
   }
}
else
{
//es un simbolo.
++contadorSimbolos;
}


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.

int i =0;
while (i != tamanhoDelArrayLetras)
{
  if (caracter == numero[i])
  {
     booleanoEsUnNumero = true;
     break;
  }

  if (caracter == letra[i])
  {
     booleanoEsUnaLetra = true;
     break;
  }
++i;
}

if (booleanoEsUnaLetra == false && booleanoEsUnNumero == false)
{
  //El caracter es un simbolo
   ++contadorSimbolos;
}