Bueno, la hago cortita.
Estoy probando 3 funciones propias muy simples en c el programa es este.
pot o sea potencia de un numero usando recursividad
atonum de caracter ascii a numero
esnum o sea a ver si el carácter introducido den ascii es un numero
#include <stdio.h>
int pot (int base, int exp);
int esnum (int numero);
int atonum (int numero);
void main(void)
{
char exp,base,numero;
printf("ingrese un numero del 0 al 9 \n \n \t \t");
scanf("%c",&numero);
printf ("La funcion esnum dio %d", esnum(numero));
numero=atonum(numero);
if (numero==-1)
{
printf("No es un numero del 0 al 9 \n \n \t \t");
return (0);
}
printf("el numero ingresado es \t \t %d \n \n ", numero);
printf("ingrese un numero \n \n \t \t");
scanf("%d",&exp);
printf("ingrese un numero \n \n \t \t");
scanf("%d",&base);
return (0);
}
int pot (int base, int exp)
{
exp=exp-1;
base*=base;
if (exp>=0)
base=pot (base, exp);
if (exp==0)
return (1);
return (base);
return (1);
}
int esnum (int numero)
{
if (0<=(numero-48)<=9)
return (1);
return (-1);
}
int atonum (int numero)
{
if (0<=(numero-48)<=9)
return (numero-48);
return (-1);
}
El tema que al ejecutar la función esnum, si meto un caracter, debería darme -1 y después en el if, salir e imprimir por pantalla un -1. Pero no lo hace. Es como si lo pasara a int y luego lo trata como un numero.
Bueno ya estoy muy mareado y cansado de debugear esto una y otra vez, probablemente me enfrasque en un error muy tonto, pero ya estoy atascado asi que recurro a un tercero que se apiade de este pobre inepto y marque el error.
Bueno esos es todo desde ya gracias por su tiempo y paciencia.
Estoy probando 3 funciones propias muy simples en c el programa es este.
pot o sea potencia de un numero usando recursividad
atonum de caracter ascii a numero
esnum o sea a ver si el carácter introducido den ascii es un numero
#include <stdio.h>
int pot (int base, int exp);
int esnum (int numero);
int atonum (int numero);
void main(void)
{
char exp,base,numero;
printf("ingrese un numero del 0 al 9 \n \n \t \t");
scanf("%c",&numero);
printf ("La funcion esnum dio %d", esnum(numero));
numero=atonum(numero);
if (numero==-1)
{
printf("No es un numero del 0 al 9 \n \n \t \t");
return (0);
}
printf("el numero ingresado es \t \t %d \n \n ", numero);
printf("ingrese un numero \n \n \t \t");
scanf("%d",&exp);
printf("ingrese un numero \n \n \t \t");
scanf("%d",&base);
return (0);
}
int pot (int base, int exp)
{
exp=exp-1;
base*=base;
if (exp>=0)
base=pot (base, exp);
if (exp==0)
return (1);
return (base);
return (1);
}
int esnum (int numero)
{
if (0<=(numero-48)<=9)
return (1);
return (-1);
}
int atonum (int numero)
{
if (0<=(numero-48)<=9)
return (numero-48);
return (-1);
}
El tema que al ejecutar la función esnum, si meto un caracter, debería darme -1 y después en el if, salir e imprimir por pantalla un -1. Pero no lo hace. Es como si lo pasara a int y luego lo trata como un numero.
Bueno ya estoy muy mareado y cansado de debugear esto una y otra vez, probablemente me enfrasque en un error muy tonto, pero ya estoy atascado asi que recurro a un tercero que se apiade de este pobre inepto y marque el error.
Bueno esos es todo desde ya gracias por su tiempo y paciencia.