Competencia: Aplica las ciencias de la ingenieria
Curso:Desarrollo cliente servidor
Actividad: Serie Fibonacci Invertida
Descripcion
Para
esta nueva actividad es funfamental concimiento de programacion en java
ademas de las matematicas, parte de las ciencias basica.
El proble en si es el siguiente:
Genere una solución para el problema de imprimir los N primeros términos de la
serie de Fibonnaci en orden inverso al considerado normal, usando un arreglo de enteros
para almacenar los valores ordenados inversamente. Cree un método al cual se le ingrese el
número de términos y devuelva un arreglo con los elementos de la serie en orden inverso.
serie de Fibonnaci en orden inverso al considerado normal, usando un arreglo de enteros
para almacenar los valores ordenados inversamente. Cree un método al cual se le ingrese el
número de términos y devuelva un arreglo con los elementos de la serie en orden inverso.
Ejemplos
Entrada Salida
1. <5> → <Proceso>
→ <3,2,1,1,0>
2. <0> → <Proceso> → <Debe
ingresar un número mayor que 0>
3. <1> → <Proceso> → <0>
4. <-1> → <Proceso> → <Debe
ingresar un número mayor que 0>
5. <-3> → <Proceso> → <
Debe ingresar un número mayor que 0>
6. <2,3> → <Proceso> → <error
de ingreso/Ingrese un numero entero>
Analisis de solucion.
La serie de fibonacci
se obtiene mediante la función
sucesiva,donde dos variables se inicializan con 0 y 1,
luego cada número que se obtiene es la
suma del anterior.
La
función del arreglo es guardar un dato
en este caso los números de la serie en una posición de este, determinada por el
contador i,mediante el ciclo for, este arreglo tendrá el tamaño del valor ingresado por el usuario.
En un
segundo ciclo for, asemos el procedimiento de guardar de forma invertida en
el arreglo2 la serie que se encuentra en el arreglo. Aquí recorrimos el arreglo
de forma inversa(desde la cantidad
que ingresa el usuario hasta 0)y a la vez que vamos guardando en arreglo2 la serie.
Codigo fuente.
import java.util.Scanner;
public class SerieFibonacci {
public static void main(String[]args){
try{/*para estar
libre de posibles amenazas al programa(que se caiga
* por un
dato mal ingresado por el ususario)*/
//variables del main
int array[];
int Cant;
int i=0;
//para leer
los datos
Scanner Leer=new
Scanner (System.in);
System.out.println("la cantidad de nuemros que desea ver de la serie
Fibonacci.");
Cant=Integer.parseInt(Leer.next());
/*variable en la que se guarda lo ingresado por el ususario*/
/*condicion
se es menor a cero enviarle un mensaje al ususario
* que debe
ingresar un número mayor a cero
*/
if(Cant<=0) {
System.out.print("debe
ser mayor que 0");
}
/*si ingresa un numero mayor a cero sigue el codigo*/
else{
SerieFibonacci s=new SerieFibonacci();
array=s.serie(Cant);
/*se crea un
objeto de la clase
* se crea
tambien un arreglo llamado array y se le da el valor que
* retorna
el medtodo
*terminando ser igual al valor que retorna el metodo serie*/
/*anunciamos al
usuario que se mostrara la serie inversa*/
System.out.println("La serie fibonacci invertida es: ");
System.out.println("");
/*creamos un
ciclo for para recorrer el con
* los valores
obtenidos del metodo*/
for(i=0; i<=Cant-1; i++){
System.out.print
(" "+array[i]);
}
}
/*excepcion en el caso de que el ususario ingresara un
caracter o un tipo de
* dato que
no se le pide, para que de esta manera no se caiga el programa*/
catch(NumberFormatException
e){
System.out.println("Error
de ingreso");
System.out.append("Ingrese
un numero entero "+e.getMessage());
}
/*se ejecuta
al final de la aplicacion para anunciar que
* el
programa se finalizo*/
finally{
System.out.println("");
System.out.println("Programa terminado.");
}
}
//metodo para determinar la serie de fibonacci.
int[] serie(int Cant2)
{
//inicializamos
variables
int a=0;
int i=0;
int f1=0;
int f2=1;
//ambos arreglos
tienen el tamaño del valor ingresado por el ususario
int [] arreglo=new int[Cant2];
int [] arreglo2=new int[Cant2];
/*el array arreglo guardara la serie en linea
el array
arreglo2 guardar la serie invertida*/
/*si el numero
ingresado por el usuario es 1 el arreglo 2
guardar este
valor. Luego se retornara el arreglo2*/
if(Cant2==1){
arreglo2[a]=0;
}
/* Si el valor
ingresado por el usuario es mayor a dos se emieza a ejecutar
* el for para
obtener la serie fibonacci*/
if(Cant2>=2){
for(i=0; i<=Cant2-1; i++)
{
arreglo[i]=f1;
f2+=f1;
f1 = f2 -
f1;
}
/* con el segundo for recorremos el primer arreglo en forma
invertida para
* ir guardando en
el segundo arreglo la serie fibonacci de forma invertida*/
for(i=Cant2-1; i>=0; i--)
{
arreglo2[a]=arreglo[i];
a++;
}
}
/*retornamos el arreglo con la serie invertida guarda a la
clase principal*/
return arreglo2;
}
}
Captura del programa
Conclusion.
La determinacion de la serie de fibonaccio requier de conocimiento de funciones en matematicas ademas de una serie programacion, ya que seutiliza el ciclo for, contadores, y lo primordial de esta actividad los arreglos, algo muy faci de aprender y de utilizar, resultando ser muy utiles para diferentes propositos.
Que tal cuando compile en Eclipse, me marco error en la palabra 'serie' en el array, a que se deberá eso?
ResponderEliminarSaludos,
Y quisiera saber como hacer para mostrar los tres o dos números anteriores a un numero insertado por el usuario. este es mi correo v298@hotmail.com, gracias!