//
//  main.c
//  Fibonacci
//
//  Created by SERGES on 15-10-30.
//  Copyright © 2015 SERGES. All rights reserved.
//Date: 09 Novembre 2015   //
//Programme: main.c
//Descripton: Ce programme traite les nombres de Fibonacci. Il demande a un utilisateur d'entrer la position de son choix et il affiche a celui ci le nombre de Fibonacci qui est a cette postion. Si le nmbre entre est invalide alors un message d'erreur est affiché et l'utilisateur doit entrer a nouveau un nombre valide.
//-----------------------------------------------------


#include <stdio.h>

int getNextFibonacciNumber(void){
    
    static int rang=1;
    static int a=1;
    static int b=1;
    
    int X;//Declaration de la variable qui va contenir successivement les éléments de la séquence
    
    
    if(rang<3){
        X=1;
        
    }
    else{
        X=a+b; // Affecter la somme des deux éléments précédents a X
        
    }
    
    rang =rang+1;
    
    
    
    a=b;//Affecter le (i-1)-ieme qui est b a la variable a
    b=X;//Affecter i-eme element qui est X a la variable b
    
    
    return(X);//Retourne la valeur de X qui le nombre de Fibonacci a la position c entre par l'utilisateur dans main car la fonction va se repeter en boucle c-fois
    
}

int main() {
    
    int i,rang_du_nombre,X=0;
    
    
    do{
        
        printf("Le Quelieme nombre de Fibonacci voulez-vous: ");
        scanf("%d", &rang_du_nombre);
        
        
        
        if(rang_du_nombre<=0)
            printf("Nombre incorrect. Veuillez entrer un nombre positif!\n\n");//imprime un message d'erreur si le nombre entré est negatif ou nul
        else{
            for(i=0; i<rang_du_nombre; i++){
                X= getNextFibonacciNumber();//affectez a X la valeur retournée par la fonction getNextFibonacciNumber
            }
            
            printf("Le %d-ieme nombre de Fibonacci est: %d\n",rang_du_nombre,X );//Imprime la derniere valeur de X qui correspond au nombre de Fibonacci a la position rang_du_nombre
        }
    }while(rang_du_nombre<=0);
    return 0;
    
    
}
