Título: FIBONACCI Publicado por: JOSE23 en 22 Febrero 2011, 18:52 pm Tengo que hacer el siguiente ejercicio pero no se realizarlo, alguien podria hecharme una mano.
Introducir un número entero positivo. A continuación, mostrar los números de Fibonacci comprendidos entre 1 y el número introducido. Cuando alcancemos el límite (sin sobrepasarlo), el programa mostrará cuántos números de Fibonacci existen entre 0 y el límite señalado. Se que en Fibonacci --> el primer elemento es 0, el segundo es 1, y cada digito siguiente es la suma de los dos anteriores: 0,1,1,2,3,5,8,13,21... anterior = actual actual = anterior + actual El problema aquí es que ambas variables dependen una de la otra. Cuando cambiamos el valor de una, el valor previo (que es el que nos interesa) se pierde para siempre. La solución es introducir una variable adicional, para guardar uno de los valores mientras actualizamos las variables. Lo que haremos será guardar el resultado de la suma en una variable nueva. Las asignaciones correctas son: suma = anterior + actual anterior = actual actual = suma La cuenta la actualizaremos sumándole 1 en cada paso: cuenta = cuenta + 1 Título: Re: FIBONACCI Publicado por: RyogiShiki en 22 Febrero 2011, 19:00 pm Lo siento no se hacen tareas, a menos que muestres algo de código de tus intentos y dudas específicas nadie podrá ayudarte.
Saludos Título: Re: FIBONACCI Publicado por: satu en 22 Febrero 2011, 19:02 pm Hola
Has explicado el algoritmo perfectamente, ahora pásalo a lenguaje C o C++, piensa un poco antes de pedir ayuda. Postea lo que lleves hasta ahora Saludos Título: Re: FIBONACCI Publicado por: JOSE23 en 22 Febrero 2011, 19:19 pm Código: #include <stdio.h> //Librerias que utilizara #include<conio.h> //Librerias que utilizara main(){ //Inicio el cuerpo del programa int num1, num2, suma, numero,cuenta; //Declaro variables del tipo entero cuenta=0; num1=0; num2=1; //Inicializo mis variables con valor 1 printf("Ingresa el Numero a calcular por Fibonacci: "); //Imprimo mensaje solicitando numero limite scanf("%i",&numero); //Guardo en una variable el numero limite printf("\nEl primer numero de Fibonacci es %i", num1); //Imprimo el primer numero fibonacci 1 printf("\nEl segundo numero de Fibonacci es %i", num2); //Imprimo el segundo numero fibonacci 1 printf ("\nExisten %i numeros de Fibonacci entre 0 y %i",cuenta,numero); do { //Inicializa ciclo do while suma=num1+num2; //se suma num1 y num2 y se guarda en suma printf("\nEl valor de la suma es %i", suma); //se imprime el valor de suma num1=num2; //se asigan el valor de num2 a num1 num2=suma; cuenta=cuenta+1; //se asigna el valor de suma a num2 } while(suma<=numero); //se lee la conficion del ciclo suma sea menor o igual al limite, el ciclo seguira realizandose fflush(stdin); getchar(); //da una pausa para que se pueda visualizar el resultado } //fin del programa Tengo este codigo, pero no me sale fino Título: Re: FIBONACCI Publicado por: satu en 22 Febrero 2011, 19:33 pm Hola
¿Para que muestras "cuenta" antes del bucle? Lo lógico es mostrarla después, ¿no? Además tienes que cambiar el bucle que utilizas do-while por un bucle while (acuérdate de inicializar la variable "suma" antes del bucle) Y léete lo que te dije ayer - No utilices conio - main debe devolver un entero - etc Saludos EDITO: utiliza la etiqueta GeSHi para poner el código para que se lea mejor (la tienes al lado del botón de cambio de fuente) Título: Re: FIBONACCI Publicado por: RyogiShiki en 22 Febrero 2011, 19:36 pm Bueno el código claramente tiene varios errores.
En primer lugar te sugiero que no uses Conio, después que comiences el programa con: Código Y que lo termines con un: Código
Ahora también que inicialices todas tus variables a la hora de declararlas... ahh no te sigo diciendo porque me irrita >.<..... más bien! porfaor antes de que sigas cometiendo errores lee esto: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html Ahora estás haciendo mal algunas cosas: Código Esto no realizara el ciclo el número de veces que el usuario quiere, ya que lo estás comparando es con el resultado de la secuencia en el ciclo, debería ser más bien: Código
También te sugiero que muestres estas lineas después de quepidas e Límite: Código Solamente tienes un límite superior más no uno inferior así que no veo el porque de esta linea: Código Yade por sí sabes que van a existir "límite" números de la secuencia de Fibonacci y esto no es un error de programación es un error de entendimiento y redacción: Código debería ser mejor algo parecido a esto: Código El resto es cuestión de malos hábitos de programación.... Título: Re: FIBONACCI Publicado por: JOSE23 en 22 Febrero 2011, 19:43 pm Gracias por las respuestas, pero NO ENTIENDO!!!
Título: Re: FIBONACCI Publicado por: satu en 22 Febrero 2011, 19:45 pm Di qué es lo que no entiendes porque no te vamos a hacer el ejercicio
Título: Re: FIBONACCI Publicado por: BlackZeroX en 22 Febrero 2011, 19:55 pm .
En este hilo hay varios codigos de varios usuarios de vb6 realizando el codigo de la maneras mas prolija y tambien mas rapida. Puedes ver los codigos fuente para darte una idea de como hacerlo. http://foro.elhacker.net/programacion_visual_basic/reto_isfibonaccinumbern_as_long_as_boolean-t319480.0.html;msg1580947#msg1580947 Temibles Lunas!¡. Título: Re: FIBONACCI Publicado por: pajaras en 23 Febrero 2011, 00:38 am una alternativa es con recursividad, pruebalo, distingue los casos base y aplica el caso recursivo donde la función se llama a sí misma. Una variante interesante, en breves cuelgo el algoritmo, NO en C.
un saludo, pajaras Título: Re: FIBONACCI Publicado por: farresito en 23 Febrero 2011, 14:54 pm Hace unos días la hice también en C++:
Código
SI te fijas, hay un apartado donde hago el bucle; en el ejemplo he puesto hasta 20 carácteres: Código
Solo hace falta que hagas un cin para pedir al usuario un número que se guardará por ejemplo en NUM, y hacer Código
Donde NUM será la variable que guardará cuantos numeros se mostrarán (los que pida el usuario. Así que queda: Código
Espero lo hayas entendido y que no haya perdido minutos de mi vida en explicártelo ;) Un abrazo Título: Re: FIBONACCI Publicado por: pajaras en 23 Febrero 2011, 20:48 pm Funció FibonacciRecursiu (ent n:enter) retorna enter
Var f:enter fvar Si n=0 o n=1 ----> f:=1 n>1 ----> f:= FibonacciRecursiu(n-1)+FibonacciRecursiu(n-2) fsi Retorna f ffunció ventajas, es como un while pero la función se llama a sí misma hasta llegar al caso base n=0 o n=1, reduces longitud de codigo considerable. PD: como te dije, aqui tienes el algorisme de la sucesión de fibonacci, està en catalan mi lengua (si no lo entiendes traductor ;) ) cualquier otra duda, pregunta, espero haberte ayudado. Título: Re: FIBONACCI Publicado por: RyogiShiki en 24 Febrero 2011, 00:09 am Funció FibonacciRecursiu (ent n:enter) retorna enter Var f:enter fvar Si n=0 o n=1 ----> f:=1 n>1 ----> f:= FibonacciRecursiu(n-1)+FibonacciRecursiu(n-2) fsi Retorna f ffunció ventajas, es como un while pero la función se llama a sí misma hasta llegar al caso base n=0 o n=1, reduces longitud de codigo considerable. PD: como te dije, aqui tienes el algorisme de la sucesión de fibonacci, està en catalan mi lengua (si no lo entiendes traductor ;) ) cualquier otra duda, pregunta, espero haberte ayudado. No soy muy partidario de la Recursión, la verdad nunca me gustó, me gusta más la iteración, pero bueno, siempre hay muchas buenas y diferentes soluciones a un problema no? Código
|