Buscar

LISTA DE EXERCÍCIOS EM HASKELL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

LISTA DE EXERCÍCIOS EM HASKELL 
1. Elabore uma função chamada “consumo” para calcular o valor da conta de luz a ser paga 
para 
um equipamento, usando a seguinte fórmula: 
- consumo (Kwh) = ((potência do aparelho em Watts) x (horas de funcionamento por mês)) 
/1000 
- Valor da conta em (R$) = consumo (Kwh) x valor da tarifa (ex: 0,722173) 
2. Suponha que o computador não possua a operação de multiplicação. Construa a função 
“multiplica” para calcular o valor da multiplicação de dois números inteiros, m por n. 
3. Elabore a função “fatorial” que recebe um número inteiro n e exibe o fatorial do número 
informado. 
4. Elabore a função “ordena” que recebe 3 números inteiros e retorna os mesmos em ordem 
crescente. 
5. Elabore a função “mdc” que recebe dois números inteiros X e Y e calcula o M.D .C desses 
números. 
6. Elabore a função “mmc” que recebe dois números inteiros X e Y e calcula o mmc dos 
números. ( 
Você pode usar a função mdc, feita na questão anterior, para resolver este problema.) 
7. Elabore a função “potencia” que recebe 2 números inteiros X e Y e calcula o resultado de X 
elevado a Y. 
8. Elabore a função “primos” que recebe um número N e devolve uma lista com os fatores 
primos 
de N. 
9. Elabore a função “maior” que recebe uma lista de números inteiros e re torna o maior 
número da 
lista. 
10. Elabore a função “ultimo” que recebe uma lista de números inteiros e retorna o último 
elemento 
da lista. 
11. Elabore a função “semonum” que recebe uma lista de números inteiros e um número inteiro 
e 
retorna uma lista sem as ocorrências do número informado. (Ex: 1 [1,2,6,5,1,6,5,4] = 
[2,6,5,6,5,4]) 
12. Elabore a função “reverte” que recebe uma lista de números inteiros e inv erte a ordem dos 
elementos da lista. (Não usar a função “reverse”) 
13. Elabore a função “maiormenor” que recebe uma lista de números inteiros e devolve como 
resposta o maior e o menor deles. (Ex: [24,12,3] = [24,3] 
14. Defina a função “produto” que recebe uma lista com números inteiros e calcula o produto 
dos 
números da lista. 
15. Elabore uma função chamada “unicorr” que rec ebe uma lista de números inteiros e um 
número 
inteiro e verifica se existe uma única ocorrência do número na lista. (Ex: 2 [2,1,5,3,2] = False) 
16. Elabore uma função chamada “uniao” que recebe duas listas de números inteiros, as listas 
não 
devem conter elementos repetidos, e retorna uma lista com todos os elementos das duas list as 
originais (sem repetição). 
17. Elabore uma função chamada “concatena” que rec ebe duas listas quaisquer e retorna uma 
lista 
com os elemtnos da primeiroa no início e os elementos da segunda no final. 
18. Elabore uma função chamada “palindroma” que rec ebe uma cadeia de caracteres (palavra) 
e 
verifica se ela é palíndroma ou não. (Ex: “ana” = True) 
19. Defina a função “parimpar” que recebe uma lista de números inteiros e devo lve duas novas 
listas, onde a primeira contém apenas números pares e a segunda os números impares. 
20. Defina a função “repetido” que recebe uma lista de números inteiros e responde se na lista 
existe algum elemento repetido. 
 
 
 
 
RESPOSTAS: 
 
 
1. 
consumo :: Float -> Float -> Float -> Float 
consumo p h v = ((p*h) / 1000)*v 
2. 
multiplica :: Int -> Int -> Int 
multiplica m n 
 | m == 0 || n == 0 = 0 
 | n > 0 = m + multiplica m(n-1) 
 | n < 0 = -m + multiplica m(n+1) 
3. 
fatorial :: Int -> Int 
fatorial n 
 | n == 0 = 1 
 | otherwise = fatorial(n-1)*n 
4. 
ordena :: Int -> Int -> Int -> (Int, Int, Int) 
ordena a b c 
 |a <= b && b <= c = (a, b, c) 
 |a <= c && c <= b = (a, c, b) 
 |b <= a && a <= c = (b, a, c) 
 |b <= c && c <= a = (b, c, a) 
 |c <= c && a <= b = (c, a, b) 
 |otherwise = (c, b, a) 
5. 
mdc :: Int -> Int -> Int 
mdc x 0 = x 
mdc x y = mdc y (x `mod` y) 
6. 
mdc :: Int -> Int -> Int 
mdc x 0 = x 
mdc x y = mdc y (x `mod` y) 
mmc :: Int -> Int -> Int 
mmc a b 
 | a > b = (div a (mdc a b))*b 
 | a < b = (div b (mdc a b))*a 
7. 
potencia :: Int -> Int -> Int 
potencia m n 
 | n == 0 = 1 
 | n == 1 = m 
 | n > 0 = m * potencia m(n-1) 
8. 
fatores :: Int -> [Int] 
fatores 0 = [] 
fatores n = [z | z <- [1..n], mod n z == 0] 
verprimo :: Int -> Bool 
verprimo 0 = False 
verprimo 1 = False 
verprimo i 
 | fatores i == [1, i] = True 
 | otherwise = False 
 
primos :: Int -> [Int] 
primos 0 = [] 
primos j = [k | k <- fatores j, verprimo k] 
9. 
maior :: [Int] -> Int 
maior [x] = x 
maior (x:xs) 
 | x > maior xs = x 
 | otherwise = maior xs 
10. 
ultimo :: [Int] -> Int 
ultimo [] = 0 
ultimo [x] = x 
ultimo (x:xs) = ultimo xs 
11. semonum :: Int -> [Int] -> [Int] 
semonum n [] = [] 
semonum n (x:xs) 
 | n == x = semonum n xs 
 | otherwise = x:semonum n xs 
12. 
reverte :: [Int] -> [Int] 
reverte [] = [] 
reverte (x:xs) = (reverte xs)++[x]

Continue navegando