Título: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: kikian94 en 11 Noviembre 2013, 11:51 am hola, tengo que hacer un programa que tenga varias opciones, la primera es la obtencion de un factorial mediante el uso de punteros y funciones de modo que dependiendo de si la variable comprobar es un 1,2 o 0 diga si el numero introducido es negativo, es correcto o ha habido desbordamiento, el problema es que he hecho todo pero al ejecutar el programa no carga y da error, se que el fallo esta en los punteros pero no se como arreglarlo
Código
Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: vangodp en 11 Noviembre 2013, 17:13 pm creo que tienes una funcion que se llama lo mismo que una variable.
cambia el nombre de la funcion a fact y ya te marcha la cosa XD Código
aclaro que no eh comprobado el funcionamiento del programa pero a la funcion ya la puedes llamar que si te funciona ;) Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: kikian94 en 12 Noviembre 2013, 08:39 am me sigue sin funcionar, lo ejecuto me pide el factorial, le meto el 3 por ejemplo y me pone que el programa dejo de funcionar
Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: vangodp en 12 Noviembre 2013, 12:22 pm No se si es esto que quieres, pero a mi no se me cuerga XD
:rolleyes: (http://i1247.photobucket.com/albums/gg633/vangodp/lol_zps1d988dcf.jpg) Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: erest0r en 13 Noviembre 2013, 01:54 am A factorial deberia asignarse el valor de numero, y cuando dices que comprobar vale 2, deberias hacer un return comprobar;
Código
entre otras cosas, porque lo demas no comprendo bien lo que querias hacer Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: KaL3o en 13 Noviembre 2013, 02:41 am Asi mirando de rapidez tu codigo, tienes dos variables diferentes con el mismo nombre
*pfactorial, dos punteros que declaras uno en el main y otro en la funcion. Edito: Te amplio un poco, el puntero de la funcion tomara la dirección de memoria que le mandes, mas no el *pfactorial del main. otro error es q tu variable comprobar en la funcion no esta inicializada, por ende si el parametro enviado es menor o igual a cero nunca entrara en tu ciclo while, bueno puede que lo haga porq la variable se llena con basura.. Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: rir3760 en 13 Noviembre 2013, 18:33 pm tengo que hacer un programa que tenga varias opciones, la primera es la obtencion de un factorial mediante el uso de punteros y funciones de modo que dependiendo de si la variable comprobar es un 1,2 o 0 diga si el numero introducido es negativo, es correcto o ha habido desbordamiento, el problema es que he hecho todo pero al ejecutar el programa no carga y da error Como ya te comentaron (salvo el ultimo punto):* El problema principal se debe a que declaras en ambas funciones (main y "factorial") una variable con el nombre "factorial". * En la función main declaras y tratas de utilizar una variable con el nombre "pfactorial": Código En su lugar solo tienes que imprimir el valor de la variable cuya dirección pasas en la llamada a la función "factorial". * Cuando se desborda un entero con signo en C ello resulta en comportamiento no definido. Para evitarlo en lugar de "a * b <= max" utilizas "a <= max / b" donde max es el valor máximo para el tipo signed int, ese valor esta dado por la macro INT_MAX definida en <limits.h>. Un saludo Título: Re: obtener factorial y evitar desbordamiento de memoria con punteros Publicado por: kellogs95 en 13 Noviembre 2013, 21:53 pm EUITT.... Creo que vamos a tener que hacer un foro para nosotros solos...
Cuidado con el detector de copias... ya tu sabe :silbar: Título: Re: Publicado por: kikian94 en 17 Noviembre 2013, 09:01 am ya lo arregle gracias, tenia un error en el while de la funcion ya que nunca entraba en el. saludos
Enviado desde mi Nexus 5 mediante Tapatalk |