Ir para o conteúdo
michaelmont

Ajuda Exercicio Haskell

Mensagens Recomendadas

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 .

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.