#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int fibonacci_a(int n, long double *v) // Almacena los valores de la secuencia para luego ser ejecutados
{
int c;
v[0] = 0;//
v[1] = 1;
for(c = 2; c <= n; c++)
{
v[c] = v[c-1] + v[c-2];
if (v[c] < v[c-1]) // En caso de que diera over flow el va retornar el vector [c-1] hasta donde fuese bien calculado
{
return c-1;
}
}
return n;
}
void serieFib(int n, long double *v) // Funcion que imprime la serie de fibonacci
{
int c;
for(c = 1; c<= n; c++)
{
printf("Fibonacci(%d) = %.0Lf\n", c, v[c]);
}
}
void Fibonacci_b(int n, long double *v) // funcion que imprime el valor de la posicion solicitada por el usuario
{
printf("Fibonacci(%d) = %.0Lf\n", n, v[n]);
}
long double Fibonacci_c(int a, long double *v )
{
long double suma;
int i;
suma=0;
for(i = 1; i <= a; i++)
{
if ( fmod(v[i],2) == 1.0)
{
suma=suma+v[i];
}
}
return suma;
}
void Fibonacci_d(long double *v)// funcion utilizada para grabar archivo
{
FILE *pa;
int c;
if (( pa = fopen("serieFibonacci.txt" , "w+")) == NULL )
{
printf ("\n no fue posible encontrar el archivo .\n");
return;
}
fprintf(pa," !!!!!!!! LA SECUENCIA DE LOS PRIMEROS 100 NUMEROS DE FIBONACCI ES !!!!!!\n");
for ( c = 1 ; c <= 100; c++ )
{
fprintf(pa,"Fibonacci(%d) = %.0Lf\n",c, v[c]);
}
fclose (pa);
}
int main() //Funcion principal
{
int x, maxfib;// declaracion de variables para el iten a
long double vetor[101];
int posicion; // declaracion de variables para el iten b
int a;// declaracion de variable para el iten c
maxfib = fibonacci_a(100, vetor);
printf("El Indice maximo para la serie Fibonacci es : %d\n", maxfib);
printf("Indique el numero para iniciar la serie : ");
scanf(" %d", &x);
printf("Serie: \n");
serieFib(x, vetor);
printf("indique la posicion para hallar su valor: ");
scanf("%d",&posicion);
Fibonacci_b(posicion, vetor);
printf("Indique un numero para realizar la sumatoria de los numeros impares de la serie de Fibonacci: ");
scanf("%d",&a);
printf("la sumatoria de impares es:%.0Lf \n", Fibonacci_c(a, vetor));
Fibonacci_d(vetor);
printf(" ########## EL ARCHIVO FUE GRABADO CORRECTAMENTE ##########.\n");
return 0;
}