segunda-feira, 12 de julho de 2010

Algoritmo da Avaliação Final - 2010/2

A sequência de Fibonacci é caracterizada pelo seguinte:
  • O primeiro numero é sempre 0.
  • O segundo numero é sempre 1.
  • Os próximos números são o resultado da soma de seus dois predecessores.
  • Exemplo: 0, 1, 1, 2, 3, 5, 8, 13, ...
Faça um algoritmo para calcular os 30 primeiros números da sequência de Fibonacci. Ao final deste processo o algoritmo deverá exibir, na ordem inversa do seu cálculo, os números de Fibonacci que forem múltiplos de 17, assim como a média aritmética destes.
____________________________

Uma solução possível usando codificação para Visualg. Observa-se que existem várias soluções, usando, ou não, um vetor para a sequência; e a solução com o vetor foi usada apenas para demonstração de uso, já que na maioria dos casos é desnecessário. Para efeito de avaliação serão considerados os seguintes elementos:
  • Laço de controle de processamento.
  • Cálculo dos números de Fibonacci.
  • Calculo dos múltiplos de 17 e da média destes.
  • Exibição dos Resultados.
  • Controles de saída dos dados.
var
...declare fibonacci[ 30 ], multi[ 30 ], i, n, t, soma, media: real
inicio
...n <- 0
...i <- 3
...fibonacci[ 1 ] <- 0
...fibonacci[ 2 ] <- 1
...enquanto i <= 30 faca
......fibonacci[ i ] <- fibonacci[ i - 1 ] + fibonacci[ i - 2 ]
......t <- fibonacci[ i ]
......se t mod 17 = 0 entao
.........n <- n + 1
.........multi[ n ] <- fibonacci[ i ]
.........soma <- soma + multi[ n ]
......fimse
......i <- i + 1
...fimenquanto
...se n > 0 entao
......i <- n
......enquanto i >= 1 faca
.........escreva multi[ i ]
.........i <- i - 1
......fimenquanto
......media <- soma / n
......escreva media
...senao
......escreva "Não existem múltiplos"
...fimse
fimalgoritmo