Exercicio 079

Home Fóruns Programação Básica Exercicio 079

Visualizando 5 respostas da discussão
  • Autor
    Posts
    • #132556

      Estou tendo uma dificuldade em resolver o exercício da forma que o professor solicitou, não sei qual parte da minha lógica esta errada.
      Segue ela:

      programa
      {
      	inclua biblioteca Util --> ut
      	
      	
      funcao inteiro fibonacci(inteiro n){
      		inteiro c = 2
      		inteiro p = 0, p1 = 1, p2 = 0
      
      		enquanto ( c <= n){
      			se(c == 2){
      				escreva(p+" -> "+p1)
      				ut.aguarde(50)
      				
      			}
      			senao{
      				escreva(" -> "+p2)
      				ut.aguarde(50)
      			}
      			p2 = p+p1
      			p = p1
      			p1 = p2
      			
      			c++	
      		}
      		retorne p
      
      		
      		
      		
      	}
      	funcao inicio()
      	{
      		inteiro tot = 0
      		escreva("Digite o numero de termo: ")
      		leia(tot)
      		escreva("Sequencia de Fibonacci: "+fibonacci(tot))
      	}
       
      }
      

      O resultado está saindo assim:
      A ordem dos valores está saindo toda esquisita

    • #132557

      Só uma correção, era pra ser retorne p2 e não retorne p

    • #132591
      Tutora Jessica
      Moderador

      Olá Pablo, testei com p2 e esta funcionando corretamente.
      O resultado que postou não apareceu pra mim, poderia nos enviar pelo discord caso ainda não tiver resolvido?
      Lhe aguardo, bons estudos 🖖🏻

    • #146651
      Renata Coelho
      Participante

      Olá! Preciso de uma explicação neste exercício da sequência de Fibonacci, em relação a variável fib.
      Uma vez que declaro a variável como cadeia “0 -> 1 -> “, e no decorreo do laço a vari+avel sempre está a receber este valor mais os valor de a3.
      Não era pra ser exibido o “0” e “1” várias vezes? No Portugol não consigo ver o que se passa dentro de da variável fib. Desde já obrigada.

      programa
      {
      funcao cadeia fibonacci(inteiro qt){
      inteiro a1, a2, a3
      a1=0
      a2=1
      cadeia fib = “0 -> 1 -> ”

      para(inteiro i=3; i<=qt; i++){ //O 1º e o 2º elemento eu já sei
      a3 = a1 + a2
      fib = fib + a3 + ” -> ”
      a1 = a2
      a2 = a3
      }
      retorne fib + “fim!\n”
      }

      funcao inicio()
      {
      inteiro tot=0
      escreva(“Números de termos: “)
      leia(tot)
      escreva(“Sequência de Fibonacci: “,fibonacci(tot))
      }
      }

    • #146710
      Tutora Jessica
      Moderador

      Ola Renata,
      Para entender melhor você precisar ler linha a linha do seu código, quando você inicia a sua variável fib recebe o valor de : “0 -> 1 -> ”, após ela recebe ela mesma + o valor de a3 , o valor de a3 é : a1 + a2 (que são 0 e 1).

      Seria essa a sua duvida?

      No seu terminal após iniciar o código esta aparecendo algum erro? Me envie por aqui ou pelo nosso discord como fica o resultado final no seu terminal.

      Bons estudos 🖖🏼

      • #146717
        Renata Coelho
        Participante

        A cada volta do laço fib recebe ela mesma, “0 -> 1 -> ”, mas no resultado só aparece uma vez. Não deveria aparecer toda vez que o loop acontece, por ex: 0 -> 1 -> a3 -> 0 -> 1 -> a3 …

    • #146740
      Tutora Jessica
      Moderador

      Como o programa lê linha por linha tambem, inverte a posição da leitura da variável fib, dessa forma:

      funcao cadeia fibonacci(inteiro qt){

      cadeia fib = “0 -> 1 -> ”
      inteiro a1, a2, a3
      a1=0
      a2=1

      Faça essa inversão e veja se funciona da forma correta.

Visualizando 5 respostas da discussão
  • Você deve fazer login para responder a este tópico.