Patricio Aros

xd

lunes, 14 de noviembre de 2011

Serie Fibonacci - Prueba Cliente-Servidor

Autor: Patricio Aros Erices
Competencia: Aplica las ciencias de la ingeniería(Nivel 1)

En la prueba que se nos tomó, vi un claro acentamiento en la parte de matemáticas, ya que hizimos uso de la serie de fibonacci, la cual es una muy conocida al momento de hablar de series matemáticas, yo tenía conocimiento de esta desde mis estudios secundarios, no obstante no me fueron de mucha ayuda al momento de aplicar el ejercicio que en la prueba se nos pedía.
Para empezar debiamos hacer que generar una serie de fibonacci hasta el numero que el usuario desee, y luego de esto guardarla en un array, y finalmente invertirla e imprimirla. No fue un trabajo fácil mas aun en la parte de invertirla, ya que se generaban muchos problemas.
La serie de fibonacci o mas bien la ecuacion que la determina es la siguiente:
an = an-1 + an-2
La manera en que solucioné el ejercicio fue la siguiente, primero que nada hize algunos ejemplos para ver si habia entendido bien lo que debia hacer:
 4 ->[P]-> 3 2 1 1
 10->[P]-> 55 34 21 13 8 5 3 2 1 1
 1->[P] 1
 Hola->[P]->Error
 A->[P]->Error
 ̕ϛ->[P]->Error
 0->[P]->0

Luego de esto realizé el análisis donde me di cuenta de una manera muy practica de invertir los numeros, sabien que estamos trabajando con array y los array a su vez trabajan en posicion, lo que hize fue que, teniendo ya la serie de fibonacci completa fue, como el usuario habia ingresado hasta que posicion de la serie queria ver, determinar esta misma como posicion inicial para la serie invertida, entonces cuando avanzaba el bucle que usé iba subiendo la posicion del invertido pero restando la posicion al original y guardando a la vez en el nuevo array los numeros de la serie pero en orden invertido.

Para mostrar un poco como habia organizado el programa a continuacion el diagrama de flujo que usé

Click para tamaño completo

Ya teniendo esto, comenze a realizar mi código, dando cuenta que no era gran cosa, claro está, luego de comprender bien la idea de lo que debia hacer.
Codigo Usado:


import java.util.Scanner;
/**
*
* @author Nexus
*/
public class Fibonacci{
      public static int[] inverSec(int num){
             int tamaño=num;
             int secuenciaNum[] =new int [tamaño];
             int numInvertido[] =new int [tamaño+1];
             int a=0,b=1,c;
             for(int i=0;i<tamaño;i++){
                   c=a+b;
                   a=b;
                    b=c;
                   secuenciaNum[i]=a;
                   System.out.println("voy en "+secuenciaNum[i]);
              }
       System.out.println("--------------");
       System.out.println("los numeros en orden invertido son:");
       for(int k=0;k<tamaño && k>=0;k++){
                   numInvertido[tamaño-k]=secuenciaNum[k];
       }
       for(int i=0;i<tamaño+1;i++){
                   System.out.print(+numInvertido[i]+" ");
        }
    return numInvertido;
}

   public static void main (String[] args){
      Scanner l= new Scanner(System.in);
      System.out.println("Ingrese los N Terminos");
      int n= Integer.parseInt(l.nextLine());
      System.out.println("--------------");
      inverSec(n);
   }
}

Capturas del codigo en funcionamiento 
 

Reflexion
Como dije al principio el uso de la matemática en este ejercicio fue un tanto alta, no obstante siguiente los pasos y tratando de buscar una solicion coherente, se logró terminar de manera completa.
Hay que destacar de manera importante que cada vez que hacemos uso de la matemática y similares, comenzamos a desarrollar plenamente nuestra habilidad de deducir o de alguna manera pensar mas rapido y encontrar soluciones más convenientes.

0 comentarios:

Publicar un comentario