Ir ao conteúdo
  • Cadastre-se
Gabriel Pancaldi

VisualG Exercício Sequência Fibonacci, não consigo fazer a soma com o anterior

Posts recomendados

Estou fazendo um exercício no qual preciso dar a sequencia Fibonacci, eu já entendi a sequencia da mesma, mas eu não consigo pegar o numero anterior resultado para fazer a soma.

 

var
n: inteiro //n1
cont: inteiro //contador
s: inteiro //n2
f: inteiro //sequencia

inicio
// Seção de Comandos
cont <- 0
f <- 0
s <- 1

REPITA

f <- f + s

s <-f

escreva(f)

cont <- cont+1

ATE cont>5

fimalgoritmo

Se alguém souber como posso fazer agradeço desde já.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Pancaldi     esse algoritmo é bem difícil de fazer mesmo,  use variáveis mais sugestivas para conseguir entender melhor, por exemplo pode ser assim :

novoTermo,cont,Termo1,Termo2 : inteiro

o primeiro e o segundo termo você já sabe que são zero e um ,  então escreva eles na tela antes do loop e depois dentro do loop faça a soma do Termo1 com o Termo2 e coloque no novoTermo e escreva na tela e em seguida pegue o Termo2 e coloque no Termo1 e pegue o novoTermo e coloque no Termo2 depois soma o valor de cont. 

   então seu código ficaria assim :

Algoritmo "fibonacci com repita"
var
  novoTermo,cont,Termo1,Termo2 : inteiro //n1
inicio
  cont <- 3
  Termo1 <- 0
  Termo2 <- 1
  escreval(" 1º Termo = ",Termo1)
  escreval(" 2º Termo = ",Termo2)
  REPITA
      .
      .
     aqui você coloca as variáveis para fazer a soma
     e trocar o valor das variáveis, Termo1 = Termo2
     e as outras .
      .
      .
    cont <- cont+1
  ATE cont > 10
fimalgoritmo

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Valeu mano, vou corrigir o meu aqui.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Gabriel Pancaldi.

 

Em qual programa você usa para compilar/executar esses código, e no Visualg ou algum outro?
Qual a versão do programa?

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas visualg

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro que baixe a versão mais recente... 3.0.6.5.

 

 

Já conseguiu fazer? por favor, poste o seu código atual para revisarmos e servi de apoio para outros usuário, e caso necessário, onde está com dúvidas.

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas, sei que já tem um bom tempo que vocês falaram sobre isso, mas estou iniciando agora algoritmos. Poderia me explicar porque você colocou Termo1 no Termo2 e Novotermo dentre do Termo2? A partir de novoTermo = Termo1 + Termo2 entendi tranquilo.

 

Meu algoritmo:

algoritmo "SEQUÊNCIAFIBONACCI"
var
   limite, Seq, Termo1, Termo2, TermoNovo: Inteiro
inicio
   Escreval("=======================================")
   Escreval("| SEQUÊNCIA FIBONACCI      |")
   Escreval("=======================================")
   Escreval("DIGITE A QUANTIDADE DE NÚMEROS QUE TERÃO NA SEQUÊNCIA:")
   Leia(limite)
   Termo1 <- 1
   Termo2 <- 1
   Escreva(Termo1,",")
   Escreva(Termo2,",")
   Enquanto limite >= Seq faca
      TermoNovo <- Termo1 + Termo2
      Escreva(TermoNovo,",")
      Termo1 <- Termo2
      Termo2 <- TermoNovo
      Seq <- Seq + 1
   FimEnquanto
fimalgoritmo

 

Ele tá funcionando, mas só queria entender essa parte que mencionei.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Miquéias Moreira, eu? :)

 

Teu código ficou muito bom!

 

Sugiro apenas verificar se realmente vai começar com 1 ou se deveria começar com 0.

 

Um outro ponto é que a quantidade informada não está batendo a quantidade mostrada, ou seja: se o usuário informar 4, não deveria exibir 4 números? (1, 1, 2, 3   ou   0, 1, 1, 2)

 

Está aparecendo mais.

 

image.png

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Eu pedi para Escrever na Tela dois 1 e acabou não dando tão certo o que eu queria fazer, mas refiz aqui e ficou desse jeito que coloquei na imagem abaixo. Você pode me explica só o que você mencionou sobre colocar o Termo2 dentro do Termo1 e o TermoNovo dentro do Termo2? Essa parte eu me perdi um pouco.

image.thumb.png.f9bcb8296d99c8e3a019c0b5a3d89021.png

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre:

3 horas atrás, Miquéias Moreira disse:

Você pode me explica só o que você mencionou sobre colocar o Termo2 dentro do Termo1 e o TermoNovo dentro do Termo2? Essa parte eu me perdi um pouco.

 

Seria sobre esta citação abaixo?

Em 12/09/2017 às 22:10, devair1010 disse:

[...] e em seguida pegue o Termo2 e coloque no Termo1 e pegue o novoTermo e coloque no Termo2 depois soma o valor de cont. 

 

No caso foi o @devair1010. Seria apenas um modo de falar...

 

"pegue o Termo2 e coloque no Termo1" = copie o valor da variável Termo2 para variável Termo1, ou seja: Termo1 vai ser igual ao Termo2. Idem para os outros 2... Termo2 vai ser igual ao TermoNovo. Foi o que você fez no teu código

 

 

@Miquéias Moreira, sempre poste também o texto do código. Desta forma dá para copiar e também ser indexado pelos robôs da internet.

 

Sobre o teu código, agora não está aparecendo os 2 primeiros termos... a quantidade está certa, mas os números da sequência não.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas, acabei esquecendo de postar aqui o meu código refeito. Refiz o meu algoritmo tem uns dias e ficou certinho agora.

algoritmo "FIBONACCI"
var
limite, Cont, Termo1, Termo2, TermoNovo: Inteiro
inicio
      Escreval("=======================================")
      Escreval("|       SEQUÊNCIA FIBONACCI            |")
      Escreval("=======================================")
      Termo1 <- 0
      Termo2 <- 1
      Escreval("DIGITE O LIMITE DA SEQUÊNCIA: ")
      Leia(limite)
      Para Cont <- 1 ate limite faca
           TermoNovo <- Termo1 + Termo2
           Termo2 <- Termo1
           Termo1 <- TermoNovo
           Escreva(TermoNovo)
      FimPara
fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Miquéias Moreira, sobre o algoritmo:

 

10 horas atrás, Miquéias Moreira disse:

      Para Cont <- 1 ate limite faca
           TermoNovo <- Termo1 + Termo2
           Termo2 <- Termo1
           Termo1 <- TermoNovo
           Escreva(TermoNovo)
      FimPara

 

Tirando a questão do Fibonacci começar com 0 ou não, precisaria rever essa lógica para calcular os próximos termos... Veja: O Termo 2 é POSTERIOR ao Termo 1, logo, não faz sentido o Termo 2 ser igual ao Termo 1. Seria o contrário...

 

O resultado pode até está saindo certo, mas fórmula está errada. Precisaria ajustar a fórmula e ajustar o código para dar a resposta correta.

 

adicionado 14 minutos depois

ADENDO:

Só para ficar mais claro... ao entrar no para/faca, o Termo Novo logo em seguida já é o 3ª número da sequência (considerando que o primeiro foi o 0 e o segundo foi o 1). Daí, você está imprimindo o 3ª termo na tela, e está exibindo ele como se fosse o primeiro. No final, vai gerar uma falsa lista.... tanto pela questão que considerou o 0 como sendo o primeiro, e exibiu como iniciando com 1. Tanto pela fórmula de gerar os próximos que está errada...

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 comunidades 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

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!