Programa que distingue números y caracteres

Cómo puedo hacer que mi programa evalúe los números que desee introducir el usuario (los que sean y de cualquier longitud) y mande un mensaje que diga si son pares o impares y distinga si teclea caracteres. Para salir, el usuario debe presionar cualquiera de las letras: 's' o 'S' ( es mayúscula o minúscula). Si el usuario teclea otra palabra mande un mensaje de error. Este es mi código
int n;
char cpatura[50];
printf("\nDame un numero, que quieres saber si es impar o par y sales del programa con la letra s\n\n"); captura[n]=0;
while (captura[n]!='s' || captura[n]!='S')
{ for(n=0;(captura[n]=getch()) != '\n';++n)
{ if(isalpha(captura[n])!=0)
{ printf("Capturastes un caracter no se puede evaluarcapturastes una tecla diferente de la salida");
}
else if (isdigit(captura[n])!=0){
if(captura[n]==0) printf("\nEl numero que me diste es cero");
else if(captura[n]%2==0) printf("\nEl numero %c es par",captura[n]);
else printf("\nEl numero %c Es impar",captura[n]); }
} }getch();return (0);
Mi problema es que las variables que uso para almacenar lo que el usuario teclea sólo aceptan datos de tipo numérico para hacer las operaciones. Pero para salir del programa el usuario debe teclear la letra 's' o 'S' y mis operadores no trabajan con números y letras a la vez. Mi programa debe distinguir si el usuario teclea un número o un carácter para poder continuar o salir de él.

1 Respuesta

Respuesta
1
Has probado hacerle un cast al valor:
((int)captura[n])%2==0
Ahora tengo el problema de que no puedo ingresar más de un número o letra, porque si por ejemplos tecleo 321, sólo entra el 3 al ciclo. Por otra parte cuando tecleo cero no me manda el mensaje de "teclee cero", sino que entra al ciclo de par o impar. Aquí esta ahora mi bucle:
while ((captura[n]=getch()) != 's' && (captura[n]=getch()) !='S')
{
if(isalpha(captura[n])!=0) //diferente es una letra
{
printf("\n\nCapturastes un caracter; no se puede evaluar.Teclee un N£mero");
}
else if (isdigit(captura[n])!=0){
if((int)captura[n]=='0') printf("\nEl numero que me diste es cero");
else if((int)captura[n]%2==0) printf("\nEl numero %c es par",(int)captura[n]);
else printf("\nEl numero %c Es impar",(int)captura[n]);
}
Lo primero es porque no incrementas la n
Lo segundo porque estás comparando
(int)captura[n] (valor entero) con
'0' (valor char)
Por tanto siempre va a ser falso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas