Skip to content

Instantly share code, notes, and snippets.

@lrlucena
Last active October 7, 2015 01:47
Show Gist options
  • Save lrlucena/3085575 to your computer and use it in GitHub Desktop.
Save lrlucena/3085575 to your computer and use it in GitHub Desktop.
Resposta da Lista de Exercícios 11
def lerInt(n)
n.times.map do
gets.to_i
end
end
vetor1 = lerInt(3)
vetor2 = lerInt(4)
vetor3 = vetor1 + vetor2
print vetor3
def lerMatriz(n)
n.times.map do
gets
.split(" ")
.map do |num|
num.to_i
end
end
end
# Escreva uma função usando os métodos de arrays (map, select e
# inject) que recebe um array de inteiros e gera como resposta a
# soma dos valores pares.
def pares(arr)
resp = arr.select do |n|
n % 2 ==0
end.inject(0) do |soma, n|
soma + n
end
return resp
end
# Alternativa mais sucinta usando {...} ao invés de do...end
def pares2(arr)
arr.select{|n| n %2 ==0}.inject(0,:+)
end
# Defina a função calcular que recebe como entrada a matriz
# turma (contendo um nome e duas notas) e gera uma nova matriz
# acrescentando a média aritmética das duas notas e a situação
# (Média >=6.0 => “Aprovado”, caso contrário, “Prova Final”).
# Abaixo segue um exemplo de uso da função.
# turma = [
# ["Joao", 10.0, 10.0],
# ["Pedro", 6.0, 5.0],
# ["Lucas", 8.0, 3.0]
#]
#resultado = calcular(turma)
#puts resultado
#O conteúdo da variável resultado, nesse trecho, deve ser:
#resultado = [
# ["Joao", 10.0, 10.0, 10.0, "Aprovado"],
# ["Pedro", 6.0, 5.0, 5.5, "Prova Final"],
# ["Lucas", 8.0, 4.0, 6.0, "Aprovado"]
#]
def calcular(matriz)
resultado = matriz.map do |nome, nota1, nota2|
media = (nota1+nota2)/2.0
situacao = if media>=6.0 then "Aprovado" else "Prova Final" end
[nome, nota1, nota2, media, situacao]
end
return resultado
end
turma = [
["Joao", 10.0, 10.0],
["Pedro", 6.0, 5.0],
["Lucas", 8.0, 3.0]
]
resultado = calcular(turma)
puts resultado
# Defina uma função que recebe como entrada o resultado da
# questão anterior e gera como resposta o nome do aluno com a
# média mais alta
def maior(resultado)
resultado.sort_by do |aluno|
aluno[3]
end.last.first
end
# Defina uma nova função que recebe como entrada a matriz turma
# (questão 5) e gera como resposta o nome do aluno com a média
# mais alta.
# Sugestão: Faça uma composição das funções das questões anteriores
def primeiro(matriz)
maior(calcular(matriz))
end
# Reescreva o programa a seguir usando o método inject
# ao invés de usar a instrução for.
# def fatorial(x)
# y = 1
# for i in 1..x do
# y = y * i
# end
# return y
# end
def fatorial(x)
(1..x).inject(1) do |y, i|
y * i
end
end
# Programa para calcular a quantidade de linhas nulas
m = 5.times.map do
gets
.split(" ")
.map{|num| num.to_i}
end
nulas = m.select do |linha|
linha.inject(true) do |result, a|
resultado and a==0
end
end
qtd_nulas = nulas.size
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment