Título: [c]Duda con return en funcion Publicado por: dmacias en 8 Abril 2014, 00:28 am Hola a todos de nuevo ;D aqui sigo liado estudiando y haciendo un programa que calcule los numeros primos me ha surgido una duda, os la explico a continuacion
El programa lo escribi asi y me daba un resultado erroneo Código
(http://www.dmaciasblog.com/wp-content/uploads/2014/04/captura-primos2.png) entonces me puse a trastear posibles soluciones y lo modifique de tal manera y ya funciona perfecto, o eso creo Código
(http://www.dmaciasblog.com/wp-content/uploads/2014/04/captura-primos.png) y me da la duda de porque de la primera forma no funciona si yo pensaba que seria lo mismo :o , haber si alguien me lo explica Un saludo ;D Título: Re: [c]Duda con return en funcion Publicado por: amchacon en 8 Abril 2014, 01:02 am Pues porque en el primer caso, el retorno que has puesto en primo no tiene sentido. Además tampoco lo compruebas ni nada.
Lo ideal esque devuelvas un 1 si es primo y 0 si no lo es. Después lo compruebas con un if y listo: Código
Por cierto sobre los numeros primos: http://foro.elhacker.net/programacion_cc/codigo_para_calcular_los_numeros_primos-t405451.0.html Título: Re: [c]Duda con return en funcion Publicado por: dmacias en 8 Abril 2014, 08:19 am ok, probare a hacerlo como me dices, no se me había ocurrido lo de 0 si no es primo y 1 si lo es.
Aun no me queda claro el porque no funciona en el primer caso si supuestamente retorno el valor de x si solo tiene dos divisores, que serian 1 y el numero mismo. Un saludo ;D Título: Re: [c]Duda con return en funcion Publicado por: do-while en 8 Abril 2014, 11:22 am ¡Buenas!
El "error" de la primera función supongo que será debido a que solo devuelves un valor cuando el número tiene dos divisores. Si no los tiene no devuelves nada y supongo que tomará como valor de retorno el último valor devuelto por la función (lo que implicaría que la llamada a la función se está realizando siempre en la misma posición de la pila...). Si no es eso, ni idea. ¡Saludos! Título: Re: [c]Duda con return en funcion Publicado por: leosansan en 8 Abril 2014, 15:27 pm ¡Buenas! El "error" de la primera función supongo que será debido a que solo devuelves un valor cuando el número tiene dos divisores. Si no los tiene no devuelves nada y supongo que tomará como valor de retorno el último valor devuelto por la función (lo que implicaría que la llamada a la función se está realizando siempre en la misma posición de la pila...). Si no es eso, ni idea. ¡Saludos! Creo que estas en lo cierto do-while. Una forma de evitar lo que sucede en tu primer código es que retorne "algo" si no es primo, algo parecido a lo que propone amchacon: Código
Y en la función main: Código
Y ya te funciona el código inicial sin problemas ya que ahora retorna la función primo si o si. Salu2!. Título: Re: [c]Duda con return en funcion Publicado por: dmacias en 8 Abril 2014, 18:51 pm Entonces teoricamente lo que me faltaba era el else con el return para que si o si "returne" algo ;D
Yo es que soy completamente novato en estas cosas asi que tengo mil y una dudas. Me vereis por aqui asiduamente :-X Un saludo |