Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.hosting: La oferta recomendada:
.NET 2.0, SQL Server, 1200MB, 10GB transf. por 9.95 Euros al mes

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

12/ago/2006
Leete esto, http://www.di.uniovi.es/~cernuda/noprog.html, no tiene desperdicio y sabrás como nos sentimos algunos a los que "suelen" preguntarnos dudas, je, je.

  Foro: C / C++.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 56759 - subrutina que detecte un caracter alfanumerico en Dev-c++
IDAsuntoFechaNick 
56759 subrutina que detecte un caracter alfanumerico en Dev-c++30/10/12 22:17errekaortu   
Buenas.
Estoy haciendo un pequeño programa con Dev-c++. No tengo ningún problema en desarrolarlo, salvo que cuando pido entrar con scanf un numero del 1 al 10, no sé desarrollar una subrutina que me detecte de si en vez de introducir un numero, se ha introducido un caracter alfanumérico (a,b,c,etc.....).
El problema se crea cuando introduzco una caracter alfanumérico, entonces la pantalla se pone a parpadear y se vuelve loco el programa. Es como si entrara en un buble "for".
Agradeceria si alguien me ayudara a desarrollar la subrutina que necesito para que en caso de introducir un caracter alfanumérico, en vez de un numero, el programa vuelva a Scanf para volver a introducir el valor numérico requerido, y así hasta que se haga correctamente.
Pongo un ejemplo:
.........

linea1: gotoxy (x,y); printf ("Introduce un numero del 1 al 10 ");scanf ("%d", &seleccion);

if (seleccion <1 || seleccion >10)
{goto linea1;
}
else
{
goto linea2;
}
//Aquí o encima del "if" quisiera poner la subrutina que detectara el caracter alfanumerico, y en caso de que así fuera, se volviera a linea1 hasta introducir un numero correcto entre 1 y 10.

gracias.

[Editado: errekaortu, 30/10/2012 22:19:24]
[errekaortu, 30/10/2012 22:20:07]
[errekaortu, 30/10/2012 22:24:40]
[errekaortu, 30/10/2012 22:26:45]
IDAsuntoFechaNick 
56866 Re: subrutina que detecte un caracter alfanumerico en Dev-c++ (Resp: 56759)21/12/12 13:36Mr. VB 6   
Hola:
Te comento dos cosas: uno, el uso del goto es mala practica (es pecado entre los programadores) y dos, no te recomiendo el uso de scanf porque agarra todo lo que venga y a veces aggara porqueria de por ahi si no se lo trata bien.

Si la entrada es por teclado podes modificar esta funcion que tenia hecha:
long miscanf() /*naturales y el cero.*/
{
    signed char ch;
    long numero = 0;

    while((ch != '\0') && (ch != '\n'))
    {
        if((ch >= '0') && (ch <= '9'))
        {
            numero = numero * 10 + (ch - '0');
        }

        if((ch < '0') || (ch >= '9'))
        {
            printf("El caracter ingresado no es valido.\n");
            return -1;
        }
        ch = getchar();
    }
    return numero;
}
que recoge numeros enteros no negativos del teclado. Podes ver si lo que devuelve esta funcion esta entre 1 y 10.

Un saludo y espero haberte ayudado.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
56867 Re: subrutina que detecte un caracter alfanumerico en Dev-c++ (Resp: 56866)21/12/12 17:08errekaortu   
Muchas gracias por tu respuesta. Lo pondré en practica. Gracias y Feliz Navidad.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 104 - App. iniciada: 18/11/2017 1:11:19 GMT - La hora GMT del servidor es: 18/11/2017 10:16:16 GMT