sábado, 22 de fevereiro de 2014

Sequência de Fibonacci

Dentre todos os mistérios da Matemática, a sequência de Fibonacci é considerada uma das mais fascinantes descobertas da história. A sequência de números proposta pelo matemático italiano Leonardo de Pisa, mais conhecido como Fibonacci, possui o numeral 1 como o primeiro e o segundo termo da ordem, e os elementos seguintes são originados pela soma de seus dois antecessores, observe:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181...

Continue lendo no link abaixo:

http://www.mundoeducacao.com/matematica/sequencia-fibonacci.htm

Baseado nestas informações,ficou fácil imprementar esta famosa sequência em Linguagem C.

Veja abaixo imagens do programa em execução:


Veja o código do programa abaixo:

#include <stdio.h>
#include <conio.h>
void Func_Uteis ( );
void inicio ( );
void Janela5 ( ) {
     int lin, col;
     col = 0;
     for ( lin = 0; lin <= 25 ; lin++ ) {
         for ( col = 0; col <= 80 ; col++ ) {
              gotoxy ( col , lin );
              if ( lin == 2 ) {
                   textbackground ( LIGHTBLUE );
                   printf ( " " );
              }
              if ( col == 1 ) {
                   textbackground ( LIGHTBLUE );
                   printf ( " " );
              }
              if ( lin == 25 ) {
                   textbackground ( LIGHTBLUE );
              }
              if ( col == 80 ) {
                   textbackground ( LIGHTBLUE );
                   printf ( " " );
              }
         }
     }
     textbackground ( BLACK );
}
void Fibonacci ( float y ) {
     int f = 1, fb = 1, fi = 2;
     textcolor ( LIGHTBLUE );
     gotoxy ( 20 , 16 );
     printf ( "Abaixo, a sequencia de Fibonaci do numero" );
     textcolor ( LIGHTRED );
     gotoxy ( 63 , 16 );
     printf ( " %.f " , y );
     textcolor ( YELLOW );
     gotoxy ( 20 , 18 );
     printf ( "%d %d " , f , fb );
     do {
         fi = f + fb;
         printf ( "%d " , fi );
         fb = f;
         f = fi;
     } while ( f + fb <= y );
     getche ( );
     inicio ( );
}
float Inte_iro ( float y ) {
     int inteiro = 0; //Vetor = ( int ) atoi ( *Vet );//Casting
     inteiro = ( int ) y; //Casting
     if ( y == ( float ) inteiro ) {
         return 1;
     } else {
         return 0;
     }
}
int Numeros ( char *string ) {
     int main ( );
     if ( ( *string >= '0' ) && ( *string <= '9' ) ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 20 , 7 );
         printf ( "Voce digitou" );
         textcolor ( LIGHTRED );
         gotoxy ( 34 , 7 );
         printf ( " %s" , string );
         textcolor ( LIGHTBLUE );
         gotoxy ( 20 , 8 );
         printf ( "Digitos Validos" );
     } else {
         textcolor ( LIGHTBLUE );
         gotoxy ( 20 , 12 );
         printf ( "\aVoce digitou" );
         textcolor ( LIGHTRED );
         gotoxy ( 35 , 12 );
         printf ( "%s " , string );
         textcolor ( LIGHTBLUE );
         gotoxy ( 41 , 12 );
         printf ( "Isto nao e um digito" );
         getche ( );
         Func_Uteis ( );
     }
     return 1;
}
void inicio ( ) {
     system ( "title OPERACOES COM UM NUMERO" );
     int i;
     system ( "cls" );
     do {
         Janela5 ( );
         textcolor ( LIGHTRED );
         gotoxy ( 30 , 7 );
         printf ( "OPERACOES COM UM NUMERO" );
         textcolor ( YELLOW );
         gotoxy ( 25 , 10 );
         printf ( "Programa desenvolvido por:" );
         textcolor ( LIGHTCYAN );
         gotoxy ( 52 , 10 );
         printf ( "Samuel Lima" );
         textcolor ( LIGHTGREEN );
         gotoxy ( 34 , 12 );
         printf ( "sa_sp10@hotmail.com" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 24 , 14 );
         printf ( "DIGITE    PARA SAIR OU   PARA CONTINUAR  " );
         textcolor ( LIGHTRED );
         gotoxy ( 32 , 14 );
         printf ( "1" );
         textcolor ( LIGHTRED );
         gotoxy ( 47 , 14 );
         printf ( "2" );
         gotoxy ( 21 , 16 );
         scanf ( "%d" , &i );
         fflush ( stdin );
         if ( i == 1 ) {
              textcolor ( LIGHTRED );
              gotoxy ( 35 , 20 );
              printf ( "O ROCCO AGRADECE" );
              Sleep ( 1800 );
              exit ( 0 );
         }
         if ( i == 2 ) {
              system ( "cls" );
              Func_Uteis ( );
         } else {
              textcolor ( LIGHTBLUE );
              gotoxy ( 35 , 20 );
              printf ( "\aOPCAO ERRADA" );
              Sleep ( 1800 );
              system ( "cls" );
         }
     } while ( i );
}
void Func_Uteis ( ) {
     system ( "title OPERACOES COM UM NUMERO" );
     char string [ 11 ];
     float n = 0;
     do {
         system ( "cls" );
         Janela5 ( );
         textcolor ( LIGHTRED );
         gotoxy ( 28 , 3 );
         printf ( "OPERACOES COM UM NUMERO" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 20 , 5 );
         printf ( "Digite um Numero " );
         textcolor ( YELLOW );
         fgets ( string , sizeof ( string ) , stdin );
         printf ( "\n\n\t\t   Return %d " , Numeros ( string ) );
         getche ( );
         n = atof ( string );
         if ( Inte_iro ( n ) == 1 ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 20 , 12 );
              printf ( "O Numero " );
              textcolor ( LIGHTRED );
              gotoxy ( 29 , 12 );
              printf ( "%0.f " , n );
              textcolor ( LIGHTBLUE );
              gotoxy ( 34 , 12 );
              printf ( "E inteiro " );
         } else {
              textcolor ( LIGHTBLUE );
              gotoxy ( 20 , 12 );
              printf ( "O Numero %.1f Nao e inteiro" , n );
         }
         textcolor ( LIGHTBLUE );
         gotoxy ( 20 , 14 );
         printf ( "Return %0.f" , Inte_iro ( n ) );
         getche ( );
         Fibonacci ( n );
     } while ( 1 );
}
int main ( ) {
     inicio ( );
}