Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

brunofmf

Dúvida num exercicio de contagem de votos

Mensagens Recomendadas

brunofmf

Boas!

Estou aqui com umas dúvidas e gostava que me ajudassem!! :confused:

A questão é a seguinte :

"Construa uma função Contagem :: Boletim -> Votacao -> Escrutinio , que dada uma votação, apura o escrutínio final associando a cada candidato o seu número de votos.

type Candidato = String

type Boletim = [Candidato] -- Lista de nomes que constam nos boletins de votos

type Votacao = [Candidato] -- cada ocorrência de um candidato representa um voto

type Escrutinio = [(Candidato,Int)]

"

O que eu fiz foi:

Contagem :: Boletim -> Votacao -> Escrutinio
Contagem [] _ = [("",0)]
Contagem _ [] = [("",0)]
Contagem (a:as) (b:bs) = if (a==b) then ([a,(1+(Contagem a bs))])
                                 else ([a,(Contagem a bs))])

Eu sei que isto não está bem mas não estou a conseguir por isto certo!

Agradecia uma ajuda!

Abraço :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Isso é fácil de fazer usando o map. Primeiro crias uma função que, dado um candidato conta o seu nº de votos. De seguida é fazer isso para todos os candidatos:

candidatoVotos :: Candidato -> Votacao -> Int
candidatoVotos _ [] = 0
candidatoVotos c (x:xs) | c==x = 1 + candidatoVotos c xs
		| otherwise = candidatoVotos c xs

contagem :: Boletim -> Votacao -> Escrutinio
contagem b v = map (\c -> (c,candidatoVotos c v)) b

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.