sábado, 12 de noviembre de 2011

Serie de Fibonnaci Inversa

Autor: Felipe Andres Lagos Morapasten
Competencia: Aplica las Ciencias de la ingeniería. (Nivel 1)
Palabras Clave: Cliente-Servidor, Java, Arreglos, Metodos.


Descripción de la Actividad

Continuando,  quiero otra vez compartir con ustedes mi resolución de un problema de la prueba número 1 del curso Desarrollo de Aplicaciones Cliente Servidor que consiste en imprimir los N términos de la serie de Fibonnaci con los valores en orden inverso al real, donde N es ingresada por el usuario, los valores se guardarán en un arreglo, con un método especifico para esto. La resolución cuenta con los ejemplos de entrada y salida, el análisis de la solución, los diagramas de clases y actividades, concluyendo con el código fuente con su respectiva captura de pantalla.

Resolución:

Ejemplos.
 -1 > [P] > “Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones”
  0  > [P] > “Error, no existe el numero 0 de la serie de Fibonacci
 1  > [P] >  “Los números son de la serie son: 0.”
 3 > [P] >  “Los números son de la serie son: 1, 1,0
+10> [P] >  “Los números son de la serie son : 34,21,13,8,5,3,2,1,1,0
100> [P] >  “Los números son de la serie son: -889489150,-90618175,…0
999999999 > [P] > “Error sobrepasa la capacidad de los enteros”
10/2 > [P] > ““Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones”
hola > [P] > ““Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones”
diez > [P] > ““Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones”
@ 1 @ > [P] > ““Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones”
_ 5 _ > [P] > “Los números son de la serie son : 3,2,1,1,0  // _ = espacio
2-1> [P] > ““Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones”

_ _ _ _ _ 3>  [P] > “Los números son de la serie son : 1,1,0  // _ = espacio
// Se le ingresó 5 espacios (enter), queda esperando hasta que se le ingrese un numero o característica, ahí ve cual camino toma.
¬¬ ??? > [P] > ““Error, Ingrese solo números positivos, Nada de letras, caracteres, ni operaciones” 


Análisis de la solución: 

La solución del problema está determinada por varios factores o pasos, como por ejemplo resolver la serie de Fibonnaci donde se puede ver que existe un proceso de recursividad, siendo una secuencia de números, el nuevo numero será la suma de los dos anteriores, empezando del 0 y 1, siendo esto sucesivamente hasta llegar al número que se ingresó.

Después es saber cómo guardar en un arreglo los números de la serie en forma invertida para luego mostrarlos de la misma forma, también creando un método que devuelve el arreglo.

F1=0; F2=1;

Entrada:
Un tipo de dato entero que sirve de parámetro para el método ingresarNumero.
El usuario ingresó 5.
ProblemaUno.ingresarNumero(leer.nextInt()) //es donde se ingresa el n° del usuario
Si no ingresa un número, detecta una excepción.

Proceso:
-Crear el arreglo con el espacio de memoria del número que se ingresó.
 int [ ]arreglo=new int[Numero]; // Numero=5;   
-Si el numero==0, Mostrar que no existe el n° de la serie de Fibonnaci
-Sacar la longitud que contiene el arreglo= 4  // es -1 por empezar de 0 en Java
-Para contador=0, hasta que contador<numero, sumar uno a contador
-Guardar en la última posición del arreglo el primer valor.
   arreglo[longitud]=PrimerNum;
-Restar uno a longitud // así guardará todos los valores en forma invertida.
F1=0+1;       // Sacar la serie de Fibonacci
F2=1-(-1);
-Esto lo hace hasta que el contador sea menor que el número.
 

Salida
Se retorna el contenido del arreglo. (1 entero)
Los números de la serie son: 3, 2, 1, 1, 0

Especificación en Diagrama.

Clases:


Actividades:



Código de la serie de Fibonnaci en Java.

Clase Problema del número 1:
/*
 *Problema 1. Serie de Fibonnaci Inversa
 * 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.
 */
package problemauno;
/*
 * @Autor Felipe Lagos Morapasten.
 */

public class Problema {

    public static int[] ingresarNumero(int Num) { // Método que retorna el arreglo
        int indice = 0; // Usado para mostrar el contenido del arreglo.
        int a = 0; // Condición usada para mostrar todo el arreglo, recorrerlo.
        int SegundoNum = 1, PrimerNum = 0; // Números para el proceso
        int[] arreglo = new int[Num];    // Longitud del arreglo es igual al número que ingresan por Programa.
        int longitud = arreglo.length - 1; // Usado para guardar los datos desde la ultima posición.

        if (Num == 0) // Si el numero que ingresan es igual a 0, muestra en pantalla
        {
            System.out.println("Error, no existe el numero 0 de la serie de Fibonacci");
        }

        if (Num > 0) // Siendo el numero mayor que 0, se ejecuta el mensaje.
        {
            System.out.println("Los números son de la serie son :");
        }


        for (int i = 0; i < Num; i++) {
            arreglo[longitud] = PrimerNum; // En la última posición del arreglo se guarda el primer valor de la serie.
            longitud--; // Para que baje de posición hasta llenar a la primera (0)
            PrimerNum = PrimerNum + SegundoNum;
            SegundoNum = PrimerNum - SegundoNum;
        }

        int largo = arreglo.length - 1;   //Usado para recorrer todo el arreglo
        while (a <= largo) {
            System.out.println(arreglo[indice]); // Muestra el arreglo desde la primera posicion.
            indice++;// Para que aumente la posición.
            a++;
        }

        return arreglo; // Mostrar el arreglo
    } // Método Ingresar
}// Clase



Clase Programa // Usa la clase anterior
/*
 * Acá es donde se le ingresa el número el usuario
 * para saber a cual corresponde de la serie de
 * Fibonacci que será de modo mostrada en forma invertida
 */
package problemauno;// Paquete
import java.util.*;  // Librería para el escáner
public class Programa {

    public static void main(String[] args) {
        try // Ante un posible error, al ingresar algo que no es numero.
        {
            Scanner leer = new Scanner(System.in);// Inicialización del escáner
            System.out.println("Ingrese el número que desea saber de la serie");// Mensaje en pantalla
            Problema.ingresarNumero(leer.nextInt()); // Donde se le ingrese el valor de la serie.
            // Para que el método lo use.

        } // Cierre TRY
        catch (Exception ex) // Captar el error
        {
            System.out.println("Error, Ingrese solo números positivos"); // Mostrar en pantalla
            System.out.println("Nada de letras, caracteres, ni operaciones");
        } // Cierre catch



 Se puede destacar de este código fuente el uso de clases donde la clase programa utilizar a Problema, esto mediante el paso de un parámetro (número), además de un método que devuelve la impresión del contenido del arreglo, el cuál contiene los números de la serie de Fibonnaci ya guardados en forma inversa

Captura en Pantalla sobre la Aplicación:




 

Reflexión
La principal dificultad de esta resolución para el problema fue determinar la lógica para guardar los términos de la serie de Fibonnaci en forma inversa, esto se pudo llevar acabo sacando la longitud que debía tener (ingresada por el usuario) el arreglo, y guarda el primer número de la serie de Fibonnaci en la última posición del arreglo, y esto realizarlo esta llenar completamente los espacios del arreglo, osea todos los valores.

Te invito a que si tienes dudas o quieres complementar esta actividades mediante opiniones, otras informaciones no tengas miedo de emitir tus comentarios, a participar donde cada comentario hará que se haga más interactivo este espacio.

No hay comentarios:

Publicar un comentario