Jump to content
Fórum Script Brasil
  • 0

Sequencia Fibonacci


Pedrinhooo
 Share

Question

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 to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Didibeatle
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...