Ir para conteúdo
Fórum Script Brasil
  • 0

Sequencia Fibonacci


Pedrinhooo

Pergunta

Olá de novo :)

tava aqui tentando desenvolver a famosa sequencia fibonatti em algoritmo (para VisualG).

no começo pareceu facil mais depois me compliquei, so iniciante e queria uma ajudinha de como mostrar essa sequencia.

só pra constar Sequencia fibonatti é assim : 1 1 2 3 5 8 1 3 2 1 ou seja somamos o numero atual com o anterior , o fato de no 13 os numeros estarem separados não altera no programa.

por enquanto esbocei isso mais ai me perdi inteiro :/

var

x, cont : inteiro

inicio

escreva ("1")

x <- 1

repita

escreva (x)

cont <- x

x <- x + cont

fimrepita

fimalgoritmo

não deu muito certo porque a variavel cont vai ser sempre igual a x e então apenas vai me mostrar o dobro do numero, mas não consegui axar um jeito de somar a variavel com o numero anterior se alguém puder me ajuda fico agradecido :)

Obrigado desde já,

Pedrinhooo

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Use outra variável que armazene o número anterior.

leia (fib);
atual = 1;
ant = 0;
se fib < 2 então
   escreva 1;
senao
   para i de 2 ate fib faca
      fib = atual + ant;
      aux = atual;
      atual = fib;
      ant = aux;
   fim_para
fim_se

fib será a sequencia que voce quer.

atual é o número atual da sequencia de fibonacci

ant é o número anterior

aux é uma variável auxiliar e só necessita ser usada para não se perder o valor de atual depois de sua atribuicão.

Link para o comentário
Compartilhar em outros sites

  • 0

kandrade vlw a resposta mas, to só começando não tem nem 3 semanas que to aprendendo programaçao em VisualG ainda e não entendi o seu code. No meu outro post tentei usar uma variavel que armazenase o numero anterior mas como pode ver não deu certo, e foi mal a ignorancia mais realmente não intendi muito a sua ideia ate porque a linguagem que eu uso aqui no programa é diferente :/

brigado a tentativa mais segue o problema de como fazer essa sequencia rodar (sozinha gerando os numeros da sequencia)

obrigado kandrade

Abraços,

Pedrinhooo ;D

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa a demora, estou viajando.

é só analisar seu código e verificar o que está errado, então vamos lá:

var
x, cont : inteiro
inicio
escreva ("1")
x <- 1
repita
escreva (x)
cont <- x
x <- x + cont
fimrepita
fimalgoritmo
vamos analisar até um certo ponto. 1 aparece na tela. x = 1 repita não tem condição de saida, portanto voce criou um laço infinito. 1 aparece na tela. cont = x = 1 x = 1 + 1 = 2 volta para o começo do laço 2 aparece na tela. cont = x = 2 x = 2 + 2 = 4 volta para o começo do laço. seu erro está ai, voce não está somando o número anterior + o atual como o fibonacci sugere. não tenho tempo pra corrigir seu código, vou apenas comentar o meu, então tire suas conclusões e se tiver dificuldades é só comentar.
leia (fib); // esse número será a condição de parada do laço.
atual = 1; // atual recebe 1 
ant = 0; // anterior recebe 0
se fib < 2 então // se eu quero menos de duas sequencias então apresento 1 na tela.
   escreva 1;
senao // senao, isso significa que quero uma sequencia maior ou igual a 2
   escreva "1, ";  
   para i de 2 ate fib faca
      fib = atual + ant;
      escreva "fib, "
      aux = atual;
      atual = fib;
      ant = aux;
   fim_para
fim_se

Epero que voce entenda até o senao.

Apartir dai vamos analisar o que acontece por exemplo se fib for igual a 4

1 aparece na tela

fib = 1 + 0 = 1

1 aparece na tela

aux = 1

atual = 1

ant = 1

volta ao começo do laço

fib = 1 + 1 = 2

2 aparece na tela

aux = 1

atual = 2

ant = 1

volta ao começo do laço

fib = 1 + 2

3 aparece na tela

aux = 2

atual = 3

ant = 2

sai do laço

resultado em tela:

1, 1, 2, 3

essa é a sequencia até a quarta posição.

;)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Pedrinhooo --

Ola de novo ;P,

é entendi o começo sim acho que boa parte, mas a ideia do programa não é ter um laço para parar entende, ele simplismente vai gerando ate você resolver fechar o programa.

to tentando aqui ainda mais ta muito complicado ^^

não perde sua viagem tentando explica não quando tive tempo você me ajuda obrigado

Abraços e boa viagem

Pedrinhooo ;D

Link para o comentário
Compartilhar em outros sites

  • 0
é entendi o começo sim acho que boa parte, mas a ideia do programa não é ter um laço para parar entende, ele simplismente vai gerando ate você resolver fechar o programa.

to tentando aqui ainda mais ta muito complicado ^^

bom.....laço infinito é considerado erro grave em programação, mas voce que sabe.

vou tradiuzir o programa que fiz para a linguagem que voce usa.

fib, atual, ant, aux : inteiro

atual <- 1
ant <- 0

escreva ("1")
escreva ("1, ")

repita
   fib = atual + ant
   escreva (fib)
   aux <- atual
   atual <- fib
   ant <- aux
fimrepita

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --LIDIANE --
Olá de novo :)

tava aqui tentando desenvolver a famosa sequencia fibonatti em algoritmo (para VisualG).

no começo pareceu facil mais depois me compliquei, so iniciante e queria uma ajudinha de como mostrar essa sequencia.

só pra constar Sequencia fibonatti é assim : 1 1 2 3 5 8 1 3 2 1 ou seja somamos o numero atual com o anterior , o fato de no 13 os numeros estarem separados não altera no programa.

por enquanto esbocei isso mais ai me perdi inteiro :/

var

x, cont : inteiro

inicio

escreva ("1")

x <- 1

repita

escreva (x)

cont <- x

x <- x + cont

fimrepita

fimalgoritmo

não deu muito certo porque a variavel cont vai ser sempre igual a x e então apenas vai me mostrar o dobro do numero, mas não consegui axar um jeito de somar a variavel com o numero anterior se alguém puder me ajuda fico agradecido :)

Obrigado desde já,

Pedrinhooo

Link para o comentário
Compartilhar em outros sites

  • 0

Ae velho tenta desse jeito aki, da certinho, falou...

var//Sequencia Fibonacci

x, y, z, c, i: inteiro

inicio

escreva("Digite um numero")

leia(x)

escreva("Digite outro numero")

leia(y)

escreva("Digite ate quando deseja a sua sequencia")

leia (z)

para i de 1 ate z faca

c<-x+y

x<-y

y<-c

escreva( c )

fimpara

fimalgoritimo

Editado por Didibeatle
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...