Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador media. Mostrar todas as postagens
Mostrando postagens com marcador media. Mostrar todas as postagens

terça-feira, 21 de fevereiro de 2023

URI (BEECROWD) - 1006 - Average 2 (Média 2) - Iniciante - Haskell

Ajude o blog! PIX para doações: 6d8bc7a8-5d74-493a-ab7a-3515baf35956

Vamos resolver mais um exercício em Haskell! Agora o problema Average 2 (Média 2)! Veja como é fácil resolver problemas utilizando esta linguagem!


Plataforma: Beecrowd (antiga URI)

Problema1006

Enunciado:

In english:
Read three values (variables A, B and C), which are the three student's grades. Then, calculate the average, considering that grade A has weight 2, grade B has weight 3 and the grade C has weight 5. Consider that each grade can go from 0 to 10.0, always with one decimal place.

Linguagem: Haskell

Solução:

Esse exercício é bem semelhante ao exercício "Média 1". As diferenças são:
  • naquele exercício havia apenas duas variáveis, e aqui há três;
  • o peso total no exercício "Média 1" era 11 e aqui é 10. Daria para calcular multiplicando os pesos como diz o exercício e no fim dividindo todos os valores por 10.0. No entanto, achei melhor já multiplicar cada valor lido por "seu_peso/10", ou seja, usando 0.2 no lugar de 2. Assim poupo uma operação no final. Então a fórmula que traz a média correta fica a*0.2 + b*0.3 + c*0.5.
  • A quantidade de casas decimais. Aqui usa-se uma casa, então a formatação é %.1f. Utilizei printf devido à facilidade de delimitar casas decimais com esta função.
Veja o código completo abaixo:

import Text.Printf (printf)
main :: IO ()
main = do
   a <- readLn :: IO Double
   b <- readLn :: IO Double
   c <- readLn :: IO Double
printf "MEDIA = %.1f\n" (a*0.2 + b*0.3 + c*0.5)

segunda-feira, 20 de fevereiro de 2023

URI (BEECROWD) - 1005 - Average 1 (Média 1) - Iniciante - Haskell

Ajude o blog! PIX para doações: 6d8bc7a8-5d74-493a-ab7a-3515baf35956

Vamos resolver mais um exercício em Haskell!

Agora o problema Average 1 (Média 1)! Bora?!


Plataforma: Beecrowd (antiga URI)

Problema1005

Enunciado:

In english:
Read two floating points' values of double precision A and B, corresponding to two student's grades. After this, calculate the student's average, considering that grade A has weight 3.5 and B has weight 7.5. Each grade can be from zero to ten, always with one digit after the decimal point. Don’t forget to print the end of line after the result, otherwise you will receive “Presentation Error”. Don’t forget the space before and after the equal sign.

Linguagem: Haskell

Solução:

Aqui para formatar a saída como no exercício, com cinco casas decimais, é útil fazer uso da função printf, com %.5f ela formata com 5 casas decimais após a vírgula.

Eu usei let para guardar o valor do cálculo da média em "media". No entanto, isso não seria necessário. Abaixo fiz os códigos das duas formas, você pode testá-los na plataforma e verá que os dois são aceitos.

Aqui com let:

import Text.Printf (printf)
main :: IO ()
main = do
   a <- readLn :: IO Double
   b <- readLn :: IO Double
   let media = (a * 3.5 + b * 7.5) / 11.0
   printf "MEDIA = %.5f\n" (media)

Aqui sem let:

import Text.Printf (printf)
main :: IO ()
main = do
   a <- readLn :: IO Double
   b <- readLn :: IO Double
   printf "MEDIA = %.5f\n" ((a * 3.5 + b * 7.5) / 11.0)

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