Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Suma de terminos serie de Fibonacci-C

Estas en el tema de Suma de terminos serie de Fibonacci-C en el foro de C/C++ en Foros del Web. Saludos soy nuevo en éste foro y un novato en C. Realizé éste código que obtiene la suma de los términos de la serie de ...
  #1 (permalink)  
Antiguo 27/11/2014, 11:59
 
Fecha de Ingreso: noviembre-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Suma de terminos serie de Fibonacci-C

Saludos soy nuevo en éste foro y un novato en C.
Realizé éste código que obtiene la suma de los términos de la serie de fibnacci:
Código:
# include <stdio.h>

int main() {
  int previous, current = 0, next = 1,
      sum = current, threshold;
  printf("Enter the threshold: ") ;
  scanf("%d", &threshold) ;
  printf("Fibonacci series: %d", current) ;
  while (sum < threshold) {
    previous = current;
    current = next;
    next = previous + current;
    printf(" + %d", current) ;
    sum += current;
  }
  printf(" = %d\n", sum);
  return 0;
}
Y necesito que me diga a partir de que término de la serie la suma de todos los términos se vuelve mayor de 7 digitos, traté de hacerlo con "treshold" poniendo por ejemplo, que fuera menor a 1000000 pero algo hice mal porque no me salen números menores que el treshold. Espero haberme dado a entender, y muchas gracias !
  #2 (permalink)  
Antiguo 27/11/2014, 14:00
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Suma de terminos serie de Fibonacci-C

La condición de salida deja de cumplirse cuando al último valor inferior al threshold le sumas el siguiente valor. Siempre saldrá cuando sum sea mayor o igual que threshold. Si quieres que de de el último valor inferior a threshold, tendrás que hacer una comprobación adicional dentro del bucle:

Código C:
Ver original
  1. while (sum < threshold) {
  2.     previous = current;
  3.     current = next;
  4.     next = previous + current;
  5.     printf(" + %d", current) ;
  6.     if ((sum+current) > threshold)
  7.       break;
  8.     else
  9.       sum += current;
  10.   }

y, en este caso, dado que ya tienes la condición de salida dentro del bucle, no necesitarías ponerla en el while:

Código C:
Ver original
  1. while (1) {
  2.     previous = current;
  3.     current = next;
  4.     next = previous + current;
  5.     printf(" + %d", current) ;
  6.     if ((sum+current) > threshold)
  7.       break;
  8.     else
  9.       sum += current;
  10.   }

Por cierto, que con números enteros de 32 bits podrás llegar hasta el término 43 o 44, a partir de ahí empezarás a obtener resultados raros por desbordamiento de enteros.
  #3 (permalink)  
Antiguo 27/11/2014, 15:14
 
Fecha de Ingreso: noviembre-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Suma de terminos serie de Fibonacci-C

Ahora no me da correcta la suma
  #4 (permalink)  
Antiguo 27/11/2014, 16:51
 
Fecha de Ingreso: noviembre-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Suma de terminos serie de Fibonacci-C

Muchas gracias, ya vi mi error.

Etiquetas: int, serie, suma, terminos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:52.