Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda con Tp
Autor Mensaje
laylen Sin conexión
Empleado del buffet
:)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 14
Agradecimientos dados: 9
Agradecimientos: 2 en 1 posts
Registro en: Apr 2013
Mensaje: #16
RE: Ayuda con Tp
Podes hacer esto en el wordPad, notepad, block de notas o lo que utilices:
accesorio=[("pickups",100),("pua",5)]
costoAccesorios [ ] = 0
costoAccesorios (x:xs) = snd x + costoAccesorios xs

Notar que :accesorio=[("pickups",100),("pua",5)] es como una funcion sin parametros (como una función constante =) , ojala se entienda!)

y Después :

main costoAccesorios accesorio
105

o direcctamente
main costoAccesorios [("pickups",100),("pua",5)]

Recordá que: estas resolviendo solo lo de costo accesorios y no el costo total (lo anoto solo por las dudas!)

suerte!
03-04-2014 00:13
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Matifradus Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Mar 2010
Mensaje: #17
RE: Ayuda con Tp
la parte b donde te pide costoDeInstrumentosCaros que recibe una lista de instrumentos y retorna la suma de los costos totales de los instrumentos caros. Un instrumento es caro si el costo total supera 1500 la pudieron hacer?, osea hay que crear una lista de instrumentos primero para dsp hacer la consulta? como entendieron esto?
(Este mensaje fue modificado por última vez en: 03-04-2014 00:33 por Matifradus.)
03-04-2014 00:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
atta21 Sin conexión
Empleado del buffet
:-)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 1
Agradecimientos: 0 en 0 posts
Registro en: Apr 2013
Mensaje: #18
RE: Ayuda con Tp
Buenas a todos pude hacer todas las funciones y al cuadrito mas o menos le agarre la mano.
Lo que si no me sale es esta parte:
RESOLVERLO CON ORDEN SUPERIOR
costoDeInstrumentosCaros que recibe una lista de instrumentos y retorna la suma de los costos totales de los instrumentos caros. Un instrumento es caro si el costo total supera 1500

Yo lo plantee de esta manera y me tira errores de matcheo pero por mas que intente no puedo solucionarlo:

costoDeInstrumentosCaros :: [(String,Int)] -> Int

costoDeInstrumentosCaros [] = 0
costoDeInstrumentosCaros ((x,y):xs) = sum (filter (y > 1500) (snd (xs)) )

Me podrian orientar por favor?
Desde ya muchas gracias.
(Este mensaje fue modificado por última vez en: 03-04-2014 03:34 por atta21.)
03-04-2014 03:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gan Sin conexión
Profesor del Modulo A
:ö:
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 288
Agradecimientos dados: 91
Agradecimientos: 160 en 48 posts
Registro en: Apr 2011
Mensaje: #19
RE: Ayuda con Tp
(03-04-2014 03:31)atta21 escribió:  Buenas a todos pude hacer todas las funciones y al cuadrito mas o menos le agarre la mano.
Lo que si no me sale es esta parte:
RESOLVERLO CON ORDEN SUPERIOR
costoDeInstrumentosCaros que recibe una lista de instrumentos y retorna la suma de los costos totales de los instrumentos caros. Un instrumento es caro si el costo total supera 1500

Yo lo plantee de esta manera y me tira errores de matcheo pero por mas que intente no puedo solucionarlo:

costoDeInstrumentosCaros :: [(String,Int)] -> Int

costoDeInstrumentosCaros [] = 0
costoDeInstrumentosCaros ((x,y):xs) = sum (filter (y > 1500) (snd (xs)) )

Me podrian orientar por favor?
Desde ya muchas gracias.

Para el primer argumento del filter intenta creando una función booleana que te diga si el instrumento es caro o no (costoTotal instrumento > 1500). Con eso el filter va a retornar una lista con los instrumentos caros nada más (filter esCaro instrumentos).

Después tenés que aplicarle map a la lista que te devolvió el filter (eso te faltó poner), y a la lista devuelta por el map le aplicas sum.

Fijate si te guia un poco.
03-04-2014 03:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Matifradus Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Mar 2010
Mensaje: #20
RE: Ayuda con Tp
instrumento=("gibson les paul",2000,[("pickups",100),("pua",5)])
accesorios=[("pickups",100),("pua",5)]
segundo (_,b,_)= b
tercero (_,_,c)= c

filter esCaro instrumento = filter ((costoTotalOrs instrumento > 1500)(segundo (instrumento)))

costoDeInstrumentosCaros [] = 0
costoDeInstrumentosCaros (x:xs) = sum(map (filter esCaro instrumento) xs)


alguno puede ayudarme en que es lo que me estoy equivocando hasta que le agarre la mano a esto :C
(Este mensaje fue modificado por última vez en: 03-04-2014 11:45 por Matifradus.)
03-04-2014 11:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
laylen Sin conexión
Empleado del buffet
:)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 14
Agradecimientos dados: 9
Agradecimientos: 2 en 1 posts
Registro en: Apr 2013
Mensaje: #21
RE: Ayuda con Tp
1) Si están muy confundidos, creo que les conviene tomarse un té, café o lo que quieran, y despejar la mente. Y luego regresan y miran el ejercicio.

2) mira el enunciado de nuevo: qué te pide?
una función llamada "costoDeInstrumentosCaros" que recibe una lista de instrumentos y retorna la suma de los costos totales de los instrumentos caros. Un instrumento es caro si el costo total supera 1500.
Recordá que: cada instrumento es una tupla (modelo, costoBase, accesorios) y cada accesorio es una tupla (nombre, costoAccesorio). Y que ya creaste una función costoTotal.
Y que costoTotal te devuelve el costo de 1 solo instrumento(solo 1 instrumento!). Eso quiere decir que 1 solo instrumento es una tupla de tres elementos.
Una lista de instrumentos es una lista de tuplas de tres elementos.

ejemplo:
[ ("gibson les paul", 2000, [ ("pickups",100) ,("pua",5)]) , ("abcde",2000[("algoMas",934),("otro",111)]) ]

en forma general para que se entienda "el formato" : [ (a,b,[ (c,d),(e,f) ] ),(n,o, [ (i,g),(u,y) ] ) ]

"lista de tuplas de tres elementos. De esas tuplas, el tercer elemento es una lista de tuplas de dos elementos" .

aclarando:
-tupla de tres elementos: instrumento =)
-tupla de dos elementos: accesorio =)
-lista de tuplas de 2 elementos: lista de accesorios =)
-lista de tuplas de 3 elementos: lista de instrumentos =)

Genial!!

3) qué hacía costoTotal? recibir 1 instrumento y devolverte el costo.
qué se quiere en principio? el costo de todos los instrumentos!
qué se quiere después? los costo mayores a 1500.
y finalmente sumarlos!

Entonces en principio:

map costoTotal instrumentos (te devuelve una lista con el costo de cada instrumento)

después:

filter (>1500) listaDeCostosDeInstrumentos
(qué hace filter: seleccionar los que tienen un costo mayor a 1500 )

y finalmente:

sum listaDeLosCostosMasAltos.
03-04-2014 14:26
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gan Sin conexión
Profesor del Modulo A
:ö:
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 288
Agradecimientos dados: 91
Agradecimientos: 160 en 48 posts
Registro en: Apr 2011
Mensaje: #22
RE: Ayuda con Tp
(03-04-2014 11:38)Matifradus escribió:  filter esCaro instrumento = filter ((costoTotalOrs instrumento > 1500)(segundo (instrumento)))

No creo que haga falta definir esto

(03-04-2014 11:38)Matifradus escribió:  costoDeInstrumentosCaros [] = 0
costoDeInstrumentosCaros (x:xs) = sum(map (filter esCaro instrumento) xs)

alguno puede ayudarme en que es lo que me estoy equivocando hasta que le agarre la mano a esto :C

Fijate que estás mezclando conceptos.. En el 1er argumento del map le estás pasando una LISTA pero en realidad tenés que pasarle una función (la cual va a aplicarse a todos los elementos de la lista que te devolvió el filter).

Osea, el filter te va a devolver una lista con solamente los instrumentos caros.. y el map le aplica una función (te dejo que pienses cual) a los instrumentos caros para generar otra lista la cual, luego, sum va encargarse de sumar sus elementos.

Mirate las definiciones aca:
Definición función map
Definición función filter
Definición función sum

Tanto map como filter en su 1er argumento reciben una función y en el segundo una lista, y devuelven una lista nueva.

Te debería quedar algo como:

costoDeInstrumentosCaros unaLista = sum (map ALGO (filter esCaro unaLista))

pd. Para sacar los snd (el precio adentro de las tuplas) ya lo tenes definido en la funcion costoTotal
(Este mensaje fue modificado por última vez en: 03-04-2014 14:44 por gan.)
03-04-2014 14:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.477
Agradecimientos dados: 230
Agradecimientos: 346 en 207 posts
Registro en: Jun 2008
Mensaje: #23
RE: Ayuda con Tp
Como dice gan, definir "filter esCaro instrumento" es un error.

La función filter ya está definida. Lo que vos tenés que hacer es usarla.

Para tu caso en particular, tenés que usarla con una función que sepa determinar si un instrumento es caro o no, y con una lista de instrumentos.

Si mirás el prototipo de filter, vas a ver que el primer parámetro es una función que va de un elemento a un booleano, y que el segundo es una lista de esos elementos que acepta tu función (algo onda (A->Bool) -> [A] -> [A]). Entonces, lo único que te falta de todo este chanchuyo (asumo que la lista de instrumentos ya la tenés), es hacer una función que reciba UN instrumento y determine si es caro o no.

Ya la nombraste esCaro, genial. Ahora definila como una función, y después usala junto con el filter.

¡Éxitos!

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
03-04-2014 15:22
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 2 invitado(s)