Categorías > Lenguajes > C > Como se usan isalpha && isdigit? ...
Nuevo Mensaje | Responder
lompa


150 envíos
Desconectado
1762 lecturas
2 respuestas
Como se usan isalpha && isdigit?02-08-2010 a las 15:58:12

¡Buenas a todos!
  Llevo un tiempo intentando que me funcione este pequeño programa.
  No se como se usan y por esto pregunto (lógico, no? )
  He intentado saber como se usan haciendo el siguiente programa, cuyo resultado no es el esperado. En consecuencia, y dada mi desesperación virtual, me ha conducido a preguntar (esto ha sido una subida de azúcar o algo.. no hablo así en la realidad ).

  Si alguien sabe como funcionan.. estaría muy agradecido. Igual que si me corrige el error que tiene mi programa.
  Intentaba que saliera en un lado solo los números y en el otro solo letras, pero veo que no se hace así. Si no me he explicado correctamente, lo explicare con más detalle.

Código Fuente:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main ()
{
    char cadena[20],p;
    char texto[20];
    char texto2[20];
    int i;
    puts("Teclea una equación");
    gets(cadena);

    for(i=0;i<(int)strlen(cadena);i++)
    {
        p=cadena[i];
        if(p>0 && isdigit(p))
            texto[i]=cadena[i];
        else if(p>0 && isalpha(p))
            texto2[i]=cadena[i];
    }
    puts("En teoria solo numeros---------");
    puts(texto);
    puts("
En teoria solo letras-----------");
    puts(texto2);
    puts("--END--");
    return 0;



Gracias de antemano.


Responder | Citar | Moderar | Mensaje Privado
Training Channel
wilmaforez


65 envíos
Desconectado

#1
RE: Como se usan isalpha && isdigit?02-08-2010 a las 16:37:19

Buenas
Usas arrays sin inicializar para almacenar los números y letras. Aparte de eso vas dejando huecos en las cadenas. El resultado en ese caso es indefinido.
Inicializándolas debería funcionar bien.

Saludos


Responder | Citar | Moderar | Mensaje Privado
lompa


150 envíos
Desconectado

#2
RE: Como se usan isalpha && isdigit?02-08-2010 a las 17:38:51

Me han dado esta solución. Y ya veo más o menos como funciona. Muchas gracias igualmente Wilmaa!
Código Fuente:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
    char cadena[] = "2x + 3x * (5y + 7y)";
    char numeros[30];
    char texto[30];
    int i, j, k;
    for(i = 0, j = 0, k = 0; i < strlen(cadena); i++)
    {
        if( isdigit( cadena[i] ) )
            numeros[j++] = cadena[i];
        else
        texto[k++] = cadena[i];
    }
    numeros[j] = '\0';
    texto[k] = '\0';
    puts(numeros);
    puts(texto);
    return 0;
}


Responder | Citar | Moderar | Mensaje Privado