1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#define MAXPILE 10
#include <stdio.h>
#include <stdlib.h>
long l_index;
long l_pile[MAXPILE];
long l_pile_ret[MAXPILE];
long f_depiler( void ){
return l_pile[--l_index];
}
void f_empiler( long val ){
l_pile[l_index++] = val;
}
long f_estVide( void ){
return !l_index;
}
long f_fibo( long x ){
if( 2 >= x )
return 1;
else
return f_fibo(x-1)+f_fibo(x-2);
}
/*
* Attention à la fonction notamment
* la variable y qui peut fausser le calcule
*/
long f_der_fibo( long x, long y ){
if( x == 0 )
return y;
if( x == 1 )
return y+1;
return f_der_fibo( x-1, f_der_fibo( x-2, y) );
}
void f_print_pile( const long pile[MAXPILE] ){
long i = 0;
for( i = 0; i < 10; i++ )
fprintf( stdout, "\t%ld", pile[i] );
fprintf( stdout, "\n" );
}
int f_isPair( const int i ){
return ( i %2 ) ? 0: 1;
}
int main( void ){
unsigned int i = 0;
unsigned int j = 0;
/* valeur 0 ou 1 */
for( i = 0, j = 2; i < 10; i++, j = j+2 )
f_empiler( j );
f_print_pile(l_pile);
for( i = 0; i < 10; i++ )
l_pile_ret[i] = f_der_fibo( f_depiler(),
f_isPair(i) );
/* Teste correction avec la fonction fibo */
/*for( i = 0; i < 10; i++ )
l_pile_ret[i] = f_fibo(f_depiler());*/
if( !f_estVide() ){
fprintf( stdout, "Pas vide voicie le resultat\n" );
for( i = 0; i < 10; i++ ){
fprintf( stdout, "Fibo(%ld)\t=%ld\n", f_depiler(),
l_pile_ret[i] );
}
}else{
fprintf( stdout, "Liste vide réactualisation liste...\n" );
for( i = 0, j = 2; i < 10; i++, j = j+2 )
f_empiler( j );
fprintf( stdout, "Pas vide voicie le resultat\n" );
for( i = 0; i < 10; i++ ){
fprintf( stdout, "Fibo(%00ld)\t=\t%00ld\n", f_depiler(),
l_pile_ret[i] );
}
}
return EXIT_SUCCESS;
} |
Partager