Ir ao conteúdo
  • Cadastre-se
UmPrograma

C A sequencia de Fibonacci não para quando solicitado!

Recommended Posts

O exercicio pede para imprimir os 25 primeiros numeros da sequencia de Fibonacci, entretanto, o codigo consegue mostrar a sequencia mas nao para quando chega em 25, mas sim em 300.

Alguem poderia da uma olha no seguinte condigo, e me dizer o que tem de errado.

 

#include <stdlib.h>
#include <stdio.h>
//Desafio sobre mostrar a sequencia de Finonacci. Os 25 primeiros.
main(){
    int i, j=0, a=0,b=1, cont=0, num, aux;

    do{

        for(i=0;i<j;i++){
            aux=a+b;
            a=b;
            b=aux;
            cont++;
            printf("%d Fibonacci %d\n",cont, aux);
        }
    j++;
    }while(j!=25); /* se eu colocar para parar quando cont chega em 25, entra em loop, ja com o j nao */

system("pause");
return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Josesousa  Olá. Daria para "contornar" o problema dessa forma:

 

cont++;
if (cont < 26)
    printf("%d Fibonacci %d\n",cont, aux);

Mas não é a melhor maneira d resolver esse exercício.

Faz um pequeno teste: imprima o valor de j no início do do/while para ver o q está acontecendo

Também seria interessante repensar a lógica para q o resultado seja correto. Dá uma olhada no link:

https://pt.wikipedia.org/wiki/Sequência_de_Fibonacci

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giu_d Valeu!!!:thumbsup:

Deu certo agora, so que não entendi muito bem o porque que quando eu colocava o do/while para parar se cont fosse 25 ele nao parava:(.

Você resolveria esse problema de qual outra forma? Eu mesmo, so consegui pensar dessa forma...                                           

Ah, acabei trocando os valores de a por b , para que comecasse em 1,1,2.....

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá..

Injeta esse codego e faz uns alteração:

#include <stdio.h>
int main()
{
    int na=1,nt=0,nn;
    for(int i=0; i<= 25; i++){
        nn = nt + na;
       na = nt;
       nt = nn;    
       printf(" - %d ",nn);
    }

}

Saida:

1,1,2,3,5,8....

Espero ter ajudado e até...

Luís.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@LuisOPsum No caso, voce fala em transformar esse codigo ne algo que de numa sequencia de Fibonacci?

Pois a saida de Fibonacci não é essa nao amigo!

Mas se for para transforma-la ate que se adeque ao exercicio, valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
57 minutos atrás, Josesousa disse:

@LuisOPsum No caso, voce fala em transformar esse codigo ne algo que de numa sequencia de Fibonacci?

Pois a saida de Fibonacci não é essa nao amigo!

Mas se for para transforma-la ate que se adeque ao exercicio, valeu!!!

Olá...

Amigo kds.. foi mal Bhother...

Era esse e mandei de outro.

Agora pode injectar esse.:

#include <stdio.h>
int main()
{
    int na=1,nt=0,nn;
    for(int i=0; i<= 25; i++){
        nn = nt + na;
       na = nt;
       nt = nn;    
       printf(" - %d ",nn);
    }

}

Obrigado e até... qualquer coisa comenta..

Luís.

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×