Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

michaelmont

Ajuda Exercicio Haskell

Recommended Posts

michaelmont

Por favor me ajudem com esse exercicios, preciso entrega-los ate o dia 4/01/2011, muito obrigado

1) (0.5) Desenvolva uma função recursiva em Haskell que retorne o último elemento de uma lista.

2) (1.0) Desenvolva uma função recursiva em Haskell que retorne o n-ésimo elemento de uma lista.

3) (0.5) Desenvolva uma função recursiva em Haskell que retorne o produto dos elementos de uma lista.

4) (1.0) Desenvolva uma função recursiva em Haskell que concatene, de forma ordenada, os elementos de duas listas de

inteiros.

5) (0.5) Desenvolva uma função em Haskell que retorne uma lista de inteiros ordenada.

6) (0.5) Desenvolva uma função em Haskell que retorne as letras de seu nome ordenadas.

7) (1.0) Desenvolva uma função em Haskell que retorne uma lista com o quadrado de cada elemento de uma lista

fornecida.

8 ) (1.5) Desenvolva uma função recursiva em Haskell que retorne o termo N da série de Fibonacci sabendo que:

Para N=1, o termo N da série de Fibonacci vale 1.

Para N=2, o termo N da série de Fibonacci vale 1.

Para N, o termo N da série de Fibonacci vale (Termo N-1) +

(Termo N-2).

9) (1.0) Desenvolva uma função em Haskell que retorne o somatório dos N primeiros termos da série de Fibonacci.

10) (2.5) Desenvolva uma função em Haskell que receba uma lista de string com nomes e uma lista de Float com 3

notas. A função deverá retornar uma lista de tuplas aonde cada tupla será composta por um nome, a média

aritmética das duas maiores notas e um status que poderá ser APROVADO para a referida média igual ou superior a 6 e

REPROVADO caso contrário.

Sei que isso é uma bobeira para vcs que estão acostumados mais eu nunca vi essa linguagem e o professor só deu uma apostila e ponto final.

Share this post


Link to post
Share on other sites
Rui Carlos

Efectivamente, os exercícios são bastante simples para muitos dos membros do fórum, mas o objectivo do fórum não é resolver os trabalhos dos outros (aliás, é capaz de ser boa ideia ler as regras do fórum).

Assim, aconselhava-te a ler um pouco sobre Haskell, e a começar a tentar resolver os exercícios, e voltar cá quando tiveres dúvidas concretas.

Share this post


Link to post
Share on other sites
Polmax

Tenta resolve-los pelo menos uma vez, ou pelo menos pensar em como os resolverias. Depois tenta passa los por haskell e se tiveres alguma duvida ou erro pergunta aqui.

Share this post


Link to post
Share on other sites
Polmax

so arranjei tempo agora lol ...

pra te dar uma ajuda e algo pra começar .

(eu nao me preocupo muito com acentos e com a gramatica em geral quando escrevo, por isso le rapido :O)

o primeiro exercicio tens que pegar numa lista e devolver o ultimo elemento.

vamos la pensar um pouco, o que se fa primeiro ( indica-se o tipo da funçao)

ou seja tens que indicar o que é que a funçao recebe e o que devolve

digamos que queres pegar numa lista de numeros inteiros e devolver o ultimo elemento, neste caso o tipo vai ser

uma lista de inteiros -> [int] e o resultado um inteiro que sera o ultimo elemento desta lista, em haskell seria assim

ultimo :: [int] -> Int ( a funçao ultimo tem o tipo (pegar numa lista de inteiros e devolver um inteiro)) :: significa tem o tipo e os tipos começam com letra maiuscula Int,Char,String etc

ok ja tens o tipo da funçao ultimo definido agora pensando no caso mais simples , que aconteçe se deres uma lista vazia pra funçao ? ora como vai ter que devolver um inteiro podemos dizer que seja 0

ultimo [] = 0

e agora ja na recursividade

ultimo (x:xs) | xs==[] =x

                    |otherwise = ultimo xs

o que eu escrevi foi que a funçao ultimo pega numa lista composta por uma (cabeça e uma calda) ou seja (x:xs) e caso a calda ja nao tenha elementos ( xs ==[]) devolve a cabeça , caso contrario se a lista ainda tiver calda a funçao repetese para a calda -> otherwise = ultimo xs

O primeiro exercicio completo seria assim :

ultimo :: [int] -> Int

ultimo [] = 0

ultimo (x:xs) | xs== []  = x

                    | otherwise = ultimo xs

nota : se nunca trabalhaste com listas e nao sabes o que eu quero dizer com cabeça e calda é simples

uma lista é como sabes um conjunto de alguma coisa

ex : [1,2,3,4]  ou [a,b,c,d]

a cabeça é o primeiro elemento da lista e o resto é a calda , ou seja numa lista [1,2,3] o elemento 1 esta a cabeça da calda [2,3] que em haskell escrevesse  [1]:[2,3]

eu nao sou muito bom a explicar XD qualquer duvida no que eu escrevi podes perguntar e tenta pegar no que aprenderes aqui e fazer os outros exercicios ou pelo menos tentar .

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.