Skip to content

Instantly share code, notes, and snippets.

@lrlucena
Last active December 12, 2015 06:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save lrlucena/4731769 to your computer and use it in GitHub Desktop.
Save lrlucena/4731769 to your computer and use it in GitHub Desktop.
Lista de Exercicios 08
# Escreva um programa que leia n números e mostre a soma deles.
# O programa deve parar de ler quando o usuário digitar -1.
soma = 0
n = gets.to_i
while n!=-1 do
soma = soma + n
n = gets.to_i
end
# alternativa em Ruby 2.0 (linhas 4-9)
# entrada = (1..(1.0/0)).lazy.map{gets.to_i}
# soma = entrada.take_while{|n| n!=-1}.inject(0,:+)
puts soma
# Escreva um programa que lê uma sequência de nomes e mostre-os
# em ordem alfabética. O programa deve parar de ler quando o
# usuário digitar fim.
lista = []
n = gets.chomp
while n!="fim" do
lista << n
n = gets.chomp
end
# Alternativa em Ruby 2.0(linhas 5-10)
# entrada = (1..(1.0/0)).lazy.map{gets.chomp}
# lista = entrada.take_while{|a| a!="fim"}
puts lista.sort
# Um determinado material radioativo perde metade de sua massa a
# cada 50 segundos. Dada a massa inicial, em gramas, desenvolva
# um algoritmo que determine o tempo necessário para que a massa
# se torne menor que 0,5 grama. O algoritmo deve mostrar a massa
# inicial, a final e o tempo calculado mostrado na forma de horas,
# minutos e segundos.
inicial = gets.to_f
final = inicial
tempo = 0
while final>0.5 do
final = final / 2
tempo = tempo + 50
end
# Alternativa em Ruby 2.0 (linhas 10-15)
# passos = (1..(1.0/0)).lazy.map{|n| [inicial/2**n, 50*n]}
# final, tempo = passos.drop_while{|massa,b| massa>0.5}.first
horas = tempo.to_i / 3600
minutos = tempo.to_i % 3600 / 60
segundos = tempo.to_i % 60
puts "Massa inicial: #{inicial}"
puts "Massa final: #{final}"
puts "Tempo: #{horas}:#{minutos}:#{segundos}"
# encoding: utf-8
# Em Ruby, para a geração de um número aleatório usamos o método
# rand(MAX), onde MAX determina o valor máximo a ser gerado.
# Exemplo: para gerar um número entre 0 e 100 podemos aplicar a
# seguinte linha
# num = rand(100)
# Escreva um programa (jogo) que gere um número entre 0 e 1000 e
# peça para o usuário adivinhar o número. A cada tentativa o
# programa informa se o número informado pelo usuário é maior ou
# menor que o número a ser descoberto. Ao final o programa deve
# informar quantas tentativas foram feitas até a descoberta do
# número.
numero = rand(1000)
print "Digite um número: "
n = gets.to_i
while n!=numero do
print "Digite um número: "
n = gets.to_i
end
# alternativa em Ruby 2.0(linhas 17-22)
# entrada = (1..(1.0/0)).lazy.map{print "Digite um número: "; gets.to_i}
# entrada.take_while{|n| n!=numero}.force
puts "Acertou"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment