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