Fibonacci

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Fibonacci as PDF for free.

More details

  • Words: 1,782
  • Pages: 7
© Miguel Ángel Acera, 2006 - www.maacera.com

Enunciados 1. Un programa que dado un número n (pedido por teclado) muestre los n primeros números de la serie de Fibonacci. 2. Un programa que dado un número n (pedido por teclado) muestre los números de la serie de Fibonacci menores que n. 3. Un programa que dado un número n (pedido por teclado), que representa una posición en la serie de Fibonacci, obtenga el número de la serie que se encuentra en esa posición. 4. Un programa que dado un número n (pedido por teclado) obtenga la posición en la que se encuentra dicho número en la serie de Fibonacci, si es que está.

Cómo afrontar los ejercicios • La sucesión de números enteros de Fibonacci se define de la siguiente forma: F1 = 1 F2 = 1 Fn = Fn-1 + Fn-2

, donde n>2

Los primeros términos de esta sucesión son: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, .... • ¿Cómo se obtiene cada número? Pues dados los dos primeros valores F1 = 1 y F2 = 1, entonces: F3 = F2 + F1 F4 = F3 + F2 F5 = F4 + F3 ...

F3 = 1 + 1 = 2 F4 = 2 + 1 = 3 F5 = 3 + 2 = 5

• ¿Cómo hacer el pseudocódigo de un programa que desarrolle la sucesión de Fibonacci?

Así, para obtener el tercer número de la sucesión tenemos que sumar los dos números anteriores, los cuales nos dan: a=1 y b=1. a + b = c 1 1 2 Para obtener el cuarto número de la sucesión tenemos que sumar los dos números anteriores, los cuales ya sabemos.

1

a + b = c 1 2 3

1/7

© Miguel Ángel Acera, 2006 - www.maacera.com

Estudiamos poco a poco la serie. Al número de la serie que vamos a calcular lo representaremos con la letra “c” y a los dos números anteriores de la serie los representaremos con las letras “a” y “b”.

© Miguel Ángel Acera, 2006 - www.maacera.com

Para obtener el quinto número de la sucesión tenemos que sumar los dos números anteriores, que ya sabemos.

1

1

a + b = c 2 3 5

Y así sucesivamente. Observemos que para cada cálculo de “c”, excepto la primera vez, “a” toma el valor de “b” del cálculo anterior y que “b” va tomando el valor de ”c” del cálculo anterior. a + b = c 1 1 2

1

a + b = c 1 2 3

1

1

a + b = c 2 3 5

a=1; b=1; c=2;

a=1; b=2; c=3;

a=2; b=3; c=5;

Y así sucesivamente. Fijándonos un poco más en cómo estamos calculando la serie de Fibonacci utilizando las variables “a”, “b” y “c” podemos ver que: 1. 2. 3. 4.

Lo primero que hacemos es inicializar a=1 y b=1. Después calculamos el valor de “c” mediante la ecuación c = a + b. A continuación asignamos a “a” el valor de “b” y a “b” el valor de “c”: a=b y b=c. Y de nuevo volvemos al paso 2 para calcular el nuevo “c”, el próximo número de la serie.

Luego el pseudocódigo general para calcular los números de la serie de Fibonacci y su ordinograma o DFD general serían: a=1; b=1; Mientras (condición) Hacer c=a+b; a=b; b=c; Fin Mientras

Inicio

condición

c=a+b; a=b; b=c;

Fin

2/7

© Miguel Ángel Acera, 2006 - www.maacera.com

a=1; b=1;

© Miguel Ángel Acera, 2006 - www.maacera.com

Así, el pseudocódigo para un programa que calcule los números de la serie de Fibonacci menores que 100 y los muestre en pantalla sería: a=1; b=1; Mientras (c<100) Hacer c=a+b; Escribir c; a=b; b=c; Fin Mientras

Soluciones Nota: Algunas soluciones utilizan printf y scanf, mientras que otras utilizan cout y cin. Observando unas soluciones y otras es fácil obtener la contraria. Los siguientes programas sólo exponen la idea de una posible solución a los problemas de la serie de Fibonacci, pero no se realiza ningún control del número introducido por teclado (si es negativo, o cero,...), lo cual debería existir siempre.

Ejercicio 1: Un programa que dado un número n (pedido por teclado) muestre los n primeros números de la serie de Fibonacci.

/* Copyright maacera.com - http://www.maacera.com */ /* Copyright Miguel Angel Acera */ #include

// // // // //

--> --> --> --> -->

Numero Numero Ultimo Numero Numero

de elementos a mostrar de la serie. a obtener de la serie. numero obtenido y anterior a "c". obtenido antes que "b". de elementos que llevamos calculados.

/* Pedimos el numero de elementos a mostrar de la serie. */ cout << "\n Cuantos numeros de la serie de Fibonacci quiere mostrar?: "; cin >> n; /* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; cout << " " << a; b = 1; cout << " " << b; /* Partimos de que tenemos dos elementos calculados. */ i = 2;

3/7

© Miguel Ángel Acera, 2006 - www.maacera.com

int main (void) { int n; int c; int b; int a; int i;

© Miguel Ángel Acera, 2006 - www.maacera.com

/* Mostramos los "n" primeros elementos de la serie. */ while (i
Ejercicio 2: Un programa que dado un número n (pedido por teclado) muestre los números de la serie de Fibonacci menores que n.

/* Copyright maacera.com - http://www.maacera.com */ /* Copyright Miguel Angel Acera */ #include <stdio.h> int main (void) { int n; int c; int b; int a;

// // // //

--> --> --> -->

Numero Numero Ultimo Numero

hasta el que mostrar de la serie. a obtener de la serie. numero obtenido y anterior a "c". obtenido antes que "b".

/* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; printf("%d ", a); b = 1; printf("%d ", b); /* Obtenemos el siguiente elemento de la serie. */ c = a + b; /* Mostramos los elementos de la serie menores que "n". */ while (c
4/7

© Miguel Ángel Acera, 2006 - www.maacera.com

/* Pedimos el numero hasta el que mostrar de la serie. */ printf("\n Hasta que numero de la serie de Fibonacci quiere mostrar?: "); scanf("%d", &n);

© Miguel Ángel Acera, 2006 - www.maacera.com

/* Actualizamos los ultimos dos elementos de la serie. */ a = b; b = c; /* Obtenemos el siguiente elemento de la serie. */ c = a + b; } }

Ejercicio 3: Un programa que dado un número n (pedido por teclado), que representa una posición en la serie de Fibonacci, obtenga el número de la serie que se encuentra en esa posición.

/* Copyright maacera.com - http://www.maacera.com */ /* Copyright Miguel Angel Acera */ #include int main (void) { int n; int c; int b; int a; int i;

// // // // //

--> --> --> --> -->

Posicion de la serie cuyo elemento queremos conocer. Numero a obtener de la serie. Ultimo numero obtenido y anterior a "c". Numero obtenido antes que "b". Posicion del elemento en la serie.

/* Pedimos la posicion de la serie cuyo elemento queremos conocer. */ cout << "\n Escriba la posicion en la serie de la cual obtener el numero: "; cin >> n; /* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; b = 1;

/* Partimos de que tenemos dos elementos calculados. */ i = 2; /* Buscamos el elemento situado en la posicion "n". */ while (i
5/7

© Miguel Ángel Acera, 2006 - www.maacera.com

/* De momento, los ultimos y unicos elementos son 1. */ c = 1;

© Miguel Ángel Acera, 2006 - www.maacera.com

i++; } /* Mostramos el numero situado en la posision dada. */ cout << "El elemento situado en esa posicion es: " << c; }

Ejercicio 4: Un programa que dado un número n (pedido por teclado) obtenga la posición en la que se encuentra dicho número en la serie de Fibonacci, si es que está.

/* Copyright maacera.com - http://www.maacera.com */ /* Copyright Miguel Angel Acera */ #include <stdio.h> int main (void) { int n; int c; int b; int a; int i;

// // // // //

--> --> --> --> -->

Numero de la serie cuya posicion queremos conocer. Numero a obtener de la serie. Ultimo numero obtenido y anterior a "c". Numero obtenido antes que "b". Posicion del elemento en la serie.

/* Pedimos el numero de la serie cuya posicion queremos saber. */ printf("\n Escriba el numero de la serie cuya posicion desee conocer: "); scanf("%d", &n); /* Los dos primeros elementos de la serie son 1 y 1. */ a = 1; b = 1;

/* Partimos de la idea de que el numero 1 esta en la posicion 2. */ i = 2; /* Buscamos el elemento "n" y su posicion. */ while (c
6/7

© Miguel Ángel Acera, 2006 - www.maacera.com

/* El ultimo numero obtenido hasta el momento es el 1. */ c = 1;

© Miguel Ángel Acera, 2006 - www.maacera.com

/* Mostramos el numero situado en la posision dada. */ printf("El numero esta situado en la posicion: %d", i); }

www.maacera.com ¿Buscas más ejercicios explicados? Recuerda que dispones de más ejercicios de C/C++ en www.maacera.com. Visita la sección Formación. ¿Buscas un libro de programación en lenguaje C/C++? En la misma web encontrarás información sobre el libro "Manual Imprescindible de C/C++", de la editorial Anaya Multimedia, recomendado por la revista PCWORLD. Visita la sección Publicaciones. ¿Quieres estar al tanto de todas las novedades? Suscríbete al newsletter de maacera.com para conocer todas las novedades y noticias de esta web. Visita la sección Newsletter.

© Miguel Ángel Acera, 2006 - www.maacera.com

Última revisión: 04/06/2006 © 2006 Miguel Ángel Acera www.maacera.com

7/7

Related Documents

Fibonacci
November 2019 39
Fibonacci
May 2020 32
Fibonacci
October 2019 39
Fibonacci
May 2020 26
Fibonacci
December 2019 32
Fibonacci
November 2019 36