martes, 15 de abril de 2008

¿Cómo diferenciar entre letras y números?

Sí, tanto letras y números son caracteres. Cada caracter, tiene asociado un código. Esto esta contenido en la tabla ASCII.
Entonces, si conozco el código correcto, podré diferenciar entre una letra o un dígito. Si nos fijamos en la tabla, los dígitos están entre el rango 48, 57 (del 0 al 9), las letras minúsculas en el rango 97, 122 y las mayúsculas 65, 90.
Un algoritmo para diferenciar entre letras y dígitos podría ser el siguiente:

  1. leer caracter de entrada
  2. compararlo con el rango de dígitos
    1. Si es verdadero, imprimir un mensaje de "es un número"
    2. Si no, preguntar por el rango de letras mayúsculas
      1. Si es verdadero, imprimir un mensaje de "es una letra mayúscula"
      2. Si no, preguntar por el rango de letras minúsculas
        1. Si es verdadero, imprimir un mensaje de "es una letra minúscula
        2. Si no, imprimir "es otro caracter".
La idea de preguntar por los tres rangos, es que entre las letras minúsculas y las mayúsculas, existen otros caracteres, así que es mejor asegurarse.

Un programa que realice esta acción podría ser el siguiente:

#include
/*
Este programa diferencia entre letras y números ingresados por teclado,
diferenciando el contenido de la variable, basándose en que, cada caracter
posee un código definido (ASCII).
*/

main()
{
char variable='0';
printf("ingresa una letra o número\n");
scanf("%c",&variable);
printf("el codigo asociado es %d\n",variable);

if(variable<=57 && variable>=48) //variable esta en el rango de digitos
printf("ingresaste un digito \n");
else if(variable<=90 && variable >=65) //variable esta en el rando de letra mayúscula
printf("INGRESASTE UNA LETRA MAYUSCULA\n");
else if(variable<=122 && variable >=97)
printf("ingresaste una letra minuscula\n");
else
printf("ingresaste otra cosa, que no es ni letra ni numero\n");
}

Existen funciones en C\C++ que emulan este procedimientos, isdigit por ejemplo. Aquí dejo un link al respecto

2 comentarios:

DeadMan dijo...

Plop!!!!
Dijiste que el problema era facil
podrias decir en que parte??
plopp!

Héctor Mamani dijo...

OK, seré más preciso es fácil si te ordenas y aplicas algo de conocimiento... para quienes no sepan de lo que habla Felipe, se trata, en resumen, de leer una entrada como esta:

hol12345
y reconocer los números como una letra, como por ejemplo, 12345=a. Entonces lo anterior se traduce en
hola y así para distintos códigos para cada letra del abecedario inglés.