elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con programa Fibonacci que trabaja con tablas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con programa Fibonacci que trabaja con tablas  (Leído 2,008 veces)
Enri_f99

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Problema con programa Fibonacci que trabaja con tablas
« en: 3 Diciembre 2017, 00:28 am »

Hola buenas, no consigo que el siquiente programa funcione y no se cual es el problema ya que al ejecutarlo solo dice "press any key to continue", si alguien sabe por que es y me lo pudiera decir lo agradecería mucho.


#include <iostream>

using namespace std;

/*
 * Pre: Introduce un número entero
 * Post: Devuelve el número de la serie de Fibonnaci correspondiente a la posición
 * del número indicado previamente
 */


char FibonacciChar(int n) {
     char F[1000];
     F[0] = '0';
     F[1] = '1';
     F[2] = '1';
     
     if(n == 1) {
         return F[1];
    }
    else if(n == 2) {
        return F[2];
    }
    else if(n == 0) {
        return F[0];
    }
    else {
        for( int i = 3 ; i <= n ; i++){
            F = F[i-1] + F[i-2] -2 * '0';
            F = F[n];
        }
        return F[n];
    }
}

/*
 * Pre: Introduce dos números positivos siendo el primero el primer término
 *  y el segundo el último término de la sucesión de Fibonacci que desea presentar.
 * Post: Devuelve los números de fibonnaci de el rango especificado por los dos números.
 */
 
int main(){
    int n1,n2;
   
    cout << "Terminos desde y hasta (0 o nega   tivo para acabar):"<<endl;
    cin >> n1;
    cin >> n2;
    if(n1 > 0 && n2 > 0 && n2 > n1){
        for(int i = n1; i < n2; i++){
        cout << i << ". " << FibonacciChar(i) << "\n";
        }
        cout << n2 << ". " << FibonacciChar(n2) << "\n";
        cout << "Terminos desde y hasta (0 o negativo para acabar):"; cin >> n1 ;
        cin >> n2;
    }
     
    return 0;
}


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Problema con programa Fibonacci que trabaja con tablas
« Respuesta #1 en: 3 Diciembre 2017, 01:54 am »

No se si esta es la razon, pero sospecho que asi es:

Si haces

a = 3;

y en la linea de abajo haces

a = 5;

quedando

a = 3;
a = 5;

la primera asignacion no sirve para nada. No tiene sentido hacerla.
Esta explicacion es para que entiendas solamente. No es que estes haciendo esto literalmente. Lo que si estas haciendo es asignar 2 veces (y entonces la primera es superflua) a la variable F en el else.

Fibonnacci parte con 0 y 1 (o 1 y 1), no con '0' y '1'.
Cuando resuelvas el primer problema que te digo (este de asignar 2 veces la misma variable) tendras problema con el segundo.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
BloodSharp


Desconectado Desconectado

Mensajes: 801


El Messi-Vegeta :D


Ver Perfil
Re: Problema con programa Fibonacci que trabaja con tablas
« Respuesta #2 en: 3 Diciembre 2017, 05:54 am »

Pre: Introduce un número entero
Post: Devuelve el número de la serie de Fibonnaci correspondiente a la posición
del número indicado previamente

Código
  1. char FibonacciChar(int n) {
  2.     char F[1000];
  3.     F[0] = '0';
  4.     F[1] = '1';
  5.     F[2] = '1';
  6.  
  7.     if(n == 1) {
  8.         return F[1];
  9.    }
  10.    else if(n == 2) {
  11.        return F[2];
  12.    }
  13.    else if(n == 0) {
  14.        return F[0];
  15.    }
  16.    else {
  17.        for( int i = 3 ; i <= n ; i++){
  18.            F = F[i-1] + F[i-2] -2 * '0';
  19.            F = F[n];
  20.        }
  21.        return F[n];
  22.    }
  23. }

No entiendo porqué hacerse tanto problema de esa manera (y encima con un vector tan largo en la pila lo cuál suele ser un problema de seguridad) cuando se puede resolver prácticamente facil la secuencia de fibonacci con calculos con números aureos en 2 líneas...

Código
  1. #include<cmath>
  2. #include<cstdio>
  3.  
  4. #define FI ((float)((float)((float)1+((float)sqrt(5)))/(float)2))
  5. #define FIBONACCI(posicion) ((int)((pow(FI,posicion)/sqrt(5))+0.5f))
  6.  
  7. int main()
  8. {
  9. int i;
  10. for(i^=i;i<10;i++)
  11. printf("Fibonacci en posicion (%i): %i\n",i,FIBONACCI(i));
  12. return 0;
  13. }

B#
« Última modificación: 3 Diciembre 2017, 05:56 am por BloodSharp » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines