• Viernes 29 de Marzo de 2024, 03:37

Autor Tema:  como hago una serie fibonaccio en c#  (Leído 2937 veces)

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
como hago una serie fibonaccio en c#
« en: Lunes 25 de Enero de 2010, 06:28 »
0
Tengo un form, en el cual tengo un text box en el que uno digita el numero del cual quiere la serie fibonacci, al dar el click en el boton calcular se tiene que desplegar en otro text box (en modo read only) la serie desde 0 hasta ese numero. Ocupo que me digan como puedo hacer esta serie fibonacci

gracias

att don2690

Xaos

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #1 en: Martes 26 de Enero de 2010, 14:04 »
0
Muy buenas:

He probado a hacer lo que exponias y lo he sacado de esta manera

Código: C#
  1. namespace Fibonaccio
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.         public Form1()
  6.         {
  7.             InitializeComponent();
  8.         }
  9.  
  10.         private void button1_Click(object sender, EventArgs e)
  11.         {
  12.             //Convierto el valor del text box a int
  13.             int numeroFinal = Convert.ToInt32(tbNumeroFinal.Text);
  14.  
  15.             //Iniciamos los dos primeros valores de la serie
  16.             int anterior0 = 0;
  17.             int anterior1 = 1;
  18.  
  19.             //Limpiamos la lista y añadimos los dos primeros valores
  20.             listaNumeros.Items.Clear();
  21.             listaNumeros.Items.Add(anterior0);
  22.             listaNumeros.Items.Add(anterior1);
  23.  
  24.             //Aqui se calcula la serie hasta que el numero de la serie
  25.             //sea mas pequeño o igual al numero maximo que le demos.
  26.             for (int i = 1; i <= numeroFinal; )
  27.             {
  28.                 listaNumeros.Items.Add(i);
  29.                 anterior0 = anterior1;
  30.                 anterior1 = i;
  31.                 i = anterior0 + anterior1;
  32.  
  33.             }
  34.  
  35.            
  36.         }
  37.     }
  38. }
  39.  
  40.  

Espero que te sirva de algo, ya que soy novato y voy a lo facil jejeje.

Un saludo!

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #2 en: Martes 26 de Enero de 2010, 16:50 »
0
en realidad yo tambien soy novato, pero una pregunta a ud le sirvio bn el ejemplo, porque digamos yo ingreso como numero limite de la serie el 6, la serie fibonaccio seria 0,1,1,2,3,5 y me sale 0,1,0,2,3,6.... creo que algo estara mal, pero como soy nuevo entonces no c mucho


saludos gracias

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #3 en: Martes 26 de Enero de 2010, 16:52 »
0
private void btn_calcular_Click(object sender, EventArgs e)
        {

            int numero = 0;

            numero = Convert.ToInt32(txt_numero.Text);

            int anterior0 = 0;
            int anterior1 = 1;

            txt_serie.Text += anterior0.ToString("n0")+" tt" + anterior1.ToString("n0") + " tt";
           

            for (int i = 0; i <= numero; i++)
            {
                txt_serie.Text += i.ToString("n0") + " tt";

                anterior0 = anterior1;
                anterior1= i;
                i = anterior0 + anterior1;
               
                //txt_serie.Text += i.ToString("n0") + " tt";
           
            }


este es el codigo que tengo ... la unica diferencia con el tuyo es que lo hiciste con listbox yo lo hice con txt porque asi me lo pide el ejercicio

Xaos

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #4 en: Martes 26 de Enero de 2010, 17:16 »
0
Buenas!

En el for, has iniciado la i a 0 y despues en cada paso le sumas uno al valor, por lo cual el resultado no es correcto.

Donde tu pones "for (int i = 0; i <= numero; i++)"
Deberia ser "for (int i = 1; i <= numero;)"

Tambien podrias haber usado un while.

int i = 0;
while(i <= numero) {
    resto de codigo
}

Un saludo!

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #5 en: Martes 26 de Enero de 2010, 17:22 »
0
tenes razon, ya me sirvio muchas gracias


nos hablamos para futuras consultas

Xaos

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #6 en: Martes 26 de Enero de 2010, 17:53 »
0
Me alegra que te haya servido. ;)

Un saludo!

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #7 en: Martes 26 de Enero de 2010, 18:00 »
0
si claro, pero encontre un pequeño problema que no habia probado, si yo pongo como limite el 6, me tira la sucesion fibonacci correcta 0,1,1,2,3,5, pero si pongo el siete me tira la misma sucesion 0,1,1,2,3,5. si sabes porque pasa eso te lo agradeceria, igual forma ya me ayudaste con mucho gracias

Xaos

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #8 en: Martes 26 de Enero de 2010, 18:17 »
0
Es por el echo de que en el for comprobamos que la suma no sea superior al numero limite.
Así que si no pones un numero de la serie exacto, solo te muestra hasta el ultimo valor correcto.

Un saludo

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #9 en: Martes 26 de Enero de 2010, 18:28 »
0
mmm ya ya si claro te entiendo.. entonces no hay forma de que yo al ingresar el siete me tire la sucesion del 7?

saludos

Xaos

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #10 en: Martes 26 de Enero de 2010, 18:42 »
0
Te refieres teniendo el 7 como partida?
En ese caso que numero tomarias para comenzar a operar?

El 7 no está en la serie de fibonacci.

Un saludo!

don2690

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: como hago una serie fibonaccio en c#
« Respuesta #11 en: Martes 26 de Enero de 2010, 18:52 »
0
encontre una forma para crear una sucesion, la quiero compartir contigo para que la sepas


int numero = 0;
            int previo= -1;
            int result= 1;
            numero = Convert.ToInt32(txt_numero.Text);

           for (int i = 0; i < numero; i++)
         {
          int sum= result+previo;
               previo=result;
               result=sum;

               txt_serie.Text+=result.ToString("n0")+ " tt";
         }

sirve perfectamente con lo que yo te preguntaba del 7.. igual gracias x todos los aportes que hiciste