Pesquisar este blog

Livros Recomendados

domingo, 30 de abril de 2023

URI (BEECROWD) - 1013 - The Greatest (O Maior) - Iniciante - Haskell

Meus caros!

Vamos resolver aqui um problema novo em Haskell! Não tão novo assim por já ter sido resolvido em C e C++ aqui no blog, mas dessa vez vamos fazer a solução do The Greatest (O Maior) nessa outra linguagem! 

Plataforma: URI (BEECROWD)
Problema1013

Enunciado:
Faça um programa que leia três valores e apresente o maior dos três valores lidos seguido da mensagem “eh o maior”. Utilize a fórmula:


MaiorAB = (a+b+abs(a-b))/2

Obs.: a fórmula apenas calcula o maior entre os dois primeiros (a e b). Um segundo passo, portanto é necessário para chegar no resultado esperado.

Linguagem: Haskell

Solução:

Minha estratégia foi declarar uma função exatamente como a definição de MaiorAB. Por estarmos lidando com valores do tipo Int, em vez de usar o operador "/" a gente usa o "div". Assim, montei exatamente a função.

Tendo a definição da função, basta chamá-la para os parâmetros lidos na forma f ( f (a b) c), ou seja, obtenho o maior entre "a" e "b" e este maior será comparado com "c", o que resultará sempre no maior valor.

Como os valores são lidos na mesma linha, li a linha com getLine num primeiro momento para depois separar cada valor em palavras (com a função words) e convertê-los um a um para Int com map read, o que resulta, agora, em uma lista de Int que terá os três valores lidos.

Agora sim, com os valores Int, basta aplicar a função e imprimir com putStrLn o valor convertido para String, usando a função show, e exibindo o restante da mensagem como solicitado no enunciado.

Fácil? Difícil?

maiorAB :: Int -> Int -> Int
maiorAB a b = div (a + b + abs(a-b)) 2

main :: IO ()
main = do 
   line <- getLine
   let [a, b, c] = map read (words line) :: [Int]
   putStrLn (show(maiorAB (maiorAB a b) c) ++ " eh o maior")

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas