Pesquisar este blog

Livros Recomendados

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

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")

segunda-feira, 25 de maio de 2020

URI - 1013 - O Maior - Iniciante - C++

Plataforma: URI
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: C++

Solução:


#include <iostream>

using namespace std;

int main() {
    int a, b, c, d;
  
    cin >> a >> b >>c;
    
    cout << (((a + c + abs(a-c))/2) + b + abs(((a + c + abs(a-c))/2)-b))/2
         << " eh o maior" << endl;
  
    return 0;
}

terça-feira, 28 de abril de 2020

URI (BEECROWD) - 1013 - O Maior - Iniciante - C

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: C

Solução:

#include <stdio.h>
#include <math.h>

int main() {
    int a, b, c, d;
  
    scanf("%i %i %i", &a, &b, &c);
    
    d = (a + b + abs(a-b)) / 2;
    printf("%i eh o maior\n", (d + c + abs(d-c)) / 2);
}

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