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

Isabel Macedo

(Resolvido) Procurar menor numa lista com tuplos

2 mensagens neste tópico

Boa noite! Tenho duvidas numa função e espero k me possam ajudar. E obrigado pela ajuda...

É assim:

type Stock = [(Produto,Preco,Quantidade)]
type Produto = String
type Preco=Float
type Quantidade=Float

omaisBarato::Stock->(Produto,Preco)
omaisBarato []=p
omaisBarato ((n,p,q):(n1,p1,q1):xs) | (menor p p1) && (menor p omaisBarato xs)=(n,p)
                                                     | otherwise=omiasBarato ((n1,p1,q1):xs)

menor a b = if a<b then True else False

a função omaisBarato indica o produto mais barato e o seu preço.

Não sei kal é o erro da função....

Como sou iniciante em programação espero k me possam ajudar. Obrigada pela ajuda :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

omaisBarato []=p

De onde vem o p? E já agora, se não tiveres produtos, qual é o mais barato? :)

Se calhar, o caso de paragem devia ser a lista com um elemento.

Depois, devias ter menor p p1 = omaisBarato ((n,p,q):xs) em vez de (menor p p1) && (menor p omaisBarato xs)=(n,p).

Estás a comparar os dois primeiros elementos da lista. Então o que tens a fazer é eliminar o maior desses dois elementos. Se menor p p1, o mais caro é o segundo, e como tal, não o colocas na chamada recursiva. Caso contrário, deixas o primeiro de fora (coisa que já está a fazer na tua versão).

0

Partilhar esta mensagem


Link 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