elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con una funcion en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con una funcion en c  (Leído 2,337 veces)
Leon8086x

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Problemas con una funcion en c
« en: 18 Septiembre 2011, 04:06 am »

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.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problemas con una funcion en c
« Respuesta #1 en: 18 Septiembre 2011, 18:02 pm »

Si eres un principiante no deberías depurar un programa ya que esa aplicación te indicara donde se genera un error pero NO el porque de este.

Tienes que darle un buen repaso a tu material de referencia ya que hay errores de concepto, si no tienes un libro de calidad revisa los temas fijos del foro.

Lo usual en matemáticas para un rango:
Código:
0 <= a <= 9
No es valido en C, en este debes comparar con cada limite utilizando el operador lógico AND de esta forma:
Código:
0 <= (numero - 48) && (numero - 48) <= 9

La sentencia de retorno no es una llamada a función, no necesitas los paréntesis en cada "return N;".

La función de potencia no la utilizas y esta mal diseñada (verifica que pasa si el exponente es cero) debería ser:
Código
  1. int pot(int base, int exp)
  2. {
  3.   if (exp > 0)
  4.      return base * pot(base, exp - 1);
  5.   else
  6.      return 1;
  7. }

Todas las comparaciones en la forma:
Código
  1. if (0 <= (numero - 48) <= 9)
Hay que cambiarlas por:
Código
  1. if (numero >= '0' && numero <= '9')

Toma eso como un empujón, suerte.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Leon8086x

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Re: Problemas con una funcion en c
« Respuesta #2 en: 18 Septiembre 2011, 18:19 pm »

Solucionado.

Si el c lo tenia flojo.

 Desde ya muchas gracias.


Bueno aca como quedaron las funciones. Las hice por separado.

http://foro.elhacker.net/programacion_cc/ejemplos_de_funciones_en_c-t339386.0.html
« Última modificación: 18 Septiembre 2011, 18:37 pm por Leon8086x » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
la funcion buscar da problemas
Sugerencias y dudas sobre el Foro
melele 3 2,499 Último mensaje 22 Noviembre 2004, 19:23 pm
por melele
problemas con la funcion Val
Programación Visual Basic
kakinets 1 1,590 Último mensaje 3 Junio 2006, 19:56 pm
por kakinets
Problemas con funcion copy()
PHP
Diabliyo 9 7,521 Último mensaje 10 Enero 2007, 20:44 pm
por Diabliyo
Problemas con funcion mail
PHP
jamarchi 2 2,306 Último mensaje 13 Septiembre 2007, 22:19 pm
por jamarchi
Problemas con la función mysql_real_scape_string
PHP
-Ramc- 3 3,724 Último mensaje 24 Octubre 2009, 05:36 am
por HardieVon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines