Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Ayuda] Consulta Ejercicio Funcional
Autor Mensaje
Maggie89 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 11
Agradecimientos dados: 0
Agradecimientos: 4 en 1 posts
Registro en: Sep 2010
Mensaje: #1
[Ayuda] Consulta Ejercicio Funcional Ejercicios Paradigmas de Programación
Hola, estoy tratando de resolver este ejercicio de la guia y no me sale de ninguna manera, alguien me podria decir como se hace?

Gracias

1.12: "Implementar la función esCuadradoPerfecto/1, sin
hacer operaciones con punto flotante.
Ayuda: les va a venir bien una función auxiliar, tal vez de dos parámetros.
Pensar que el
primer cuadrado perfecto es 0, para llegar al 2do (1) sumo 1, para llegar
al 3ro (4) sumo
3, para llegar al siguiente (9) sumo 5, después sumo 7, 9, 11 etc..
También algo de recursividad van a tener que usar.
(Este mensaje fue modificado por última vez en: 13-04-2013 19:39 por Brich.)
03-04-2013 01:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #2
RE: [Ayuda] Consulta Ejercicio Funcional
preguntaron lo mismo en el grupo y Alf respondió:
Cita:También tené en cuenta que en muchos cursos todavía no pasó la primera
clase, por lo que puede ser que necesites que te expliquen mejor conceptos
como recursividad, y guárdas ó pattern matching, dependiendo de cómo lo
quieras resolver. Sin embargo, con lo que sabés ya debería bastar.

Por otro lado, para pensar esa función, te conviene dar éstos pasos
anteriores:
9801 es un cuadrado perfecto. ¿Cuál es su cuadrado perfecto siguiente? (no
vale usar las funciones que ya te da Haskell) ¿Podés generalizar ésto en
una función que te calcule el cuadrado siguiente de cualquier cuadrado dado?
Importante: ¿Podés responder esa pregunta sin otro dato más que el 9801?
Probablemente necesites también otra cosa.

Eso es un puntapié inicial.

Saludos!

Alf

Como justamente yo estoy dentro de quienes no pasamos de la primer clase (Lunes a la noche, anual), no me preocupé =P

Hasta el ejercicio anterior a ese salieron todos de 10 =) (tardé unos minutos en entender que los nombres de las funciones que creo NO pueden empezar en mayúsculas... blush )
(Este mensaje fue modificado por última vez en: 04-04-2013 16:55 por acuadro.)
04-04-2013 16:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #3
RE: [Ayuda] Consulta Ejercicio Funcional
Maggie89, con lo que pude leer en los apuntes, hice esto:

Spoiler: Mostrar
esCuadradoPerfecto nro
| nro==0 = 1
| nro<0 = 0
| nro>0 = sumaCuadrados nro 1
sumaCuadrados nro1 nro2
|cuadrado nro2 < nro1 = sumaCuadrados nro1 (nro2+1)
|cuadrado nro2== nro1 = 1
|cuadrado nro2 > nro1 = 0
cuadrado nro=nro*nro

le doy número (como pide el enunciado) y me responde "1" si es cuadrado perfecto o "0" si no lo es.

No creo que sea 100% lo que están buscando (algo me dice que esperan que responda con un booleano true/false), pero que saca si un número es la raiz de un entero, sin hacer ningún cálculo con decimales, lo saca =)

Slds!
06-04-2013 15:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 287
Agradecimientos dados: 300
Agradecimientos: 54 en 31 posts
Registro en: Aug 2012
Mensaje: #4
RE: [Ayuda] Consulta Ejercicio Funcional
Teniendo en cuenta que un numero es cuadrado perfecto si su raiz cuadrada devuelve un entero, yo lo resolveria de la siguiente forma y sin demasiadas complicaciones:


esCuadradoPerfecto::Integer->Bool
esCuadradoPerfecto x = sqrt x == y && esEntero y



Ahora, me resta desarrollar esEntero ...y desconozco si exite alguna funcion predefinida en el prelude que me lo resuelva pero tiene que haberla, no? Confused
08-04-2013 13:14
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #5
RE: [Ayuda] Consulta Ejercicio Funcional
el tema es que yo entendí el "sin hacer operaciones de punto flotante" como que me prohibía usar el "sqrt".

BTW:
esEntero x = x == fromInteger (round x)

Pero sigo sin parecerme que esté permitido el sqrt por el enunciado.

EDIT: logré que me responda con booleanos =)
Spoiler: Mostrar
esCuadradoPerfecto nro
| nro==0 = nro==0
| nro<0 = nro==0
| otherwise = esIgualCuadrado nro 1
esIgualCuadrado nro1 nro2
|cuadrado nro2 < nro1 = esIgualCuadrado nro1 (nro2+1)
|cuadrado nro2 == nro1 = (cuadrado nro2) == nro1
|cuadrado nro2 > nro1 = (cuadrado nro2) == nro1
cuadrado nro=nro*nro

Slds!
(Este mensaje fue modificado por última vez en: 08-04-2013 23:24 por acuadro.)
08-04-2013 13:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rodam Sin conexión
Militante
O(n)
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 72
Agradecimientos dados: 12
Agradecimientos: 4 en 4 posts
Registro en: Jan 2012
Mensaje: #6
RE: [Ayuda] Consulta Ejercicio Funcional
Yo lo hice de una manera diferente, no le di mucha bola a la pista del ejercicio porque solo me confundia, lo que hice fue usar esto

es cuadrado perfecto

Por lo tanto para determinar si un numero es cuadrado perfecto voy sumando numeros impares mientras la sumatoria sea menor a , si llega el caso en que la sumatoria es igual a entonces es cuadrado perfecto, si es mayor entonces no lo es. Dejo el codigo:


sumarImpares n i j | (n == 0) || (n < i) = 0
| (n == i) = n
| n > i = sumarImpares n (i+j) (j+2)
esCuadradoPerfecto n = (sumarImpares n 0 1) == n


en i voy guardando el resultado de la sumatoria, mientras que en j guardo el numero impar proximo a sumar.

Y no, no habia que usar sqrt, porque si n no es cuadrado perfecto estarias haciendo una operacion con punto flotante
(Este mensaje fue modificado por última vez en: 13-04-2013 00:04 por rodam.)
12-04-2013 23:57
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #7
RE: [Ayuda] Consulta Ejercicio Funcional
qué boludo, no se me ocurrió lo de guardarlo. Es buena la de la suma.

Otra forma, más pulida de la primer opción es:
esCuadradoPerfecto nro = esIgualCuadrado nro 1
esIgualCuadrado nro raiz = raiz^2 == nro || esIgualCuadrado nro (raiz+1)

que usa pattern matchin

Slds!
13-04-2013 14:09
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: 13
Agradecimientos dados: 9
Agradecimientos: 2 en 1 posts
Registro en: Apr 2013
Mensaje: #8
RE: [Ayuda] Consulta Ejercicio Funcional
Hola, Que tal? Soy nueva y no puedo crear un tema,pido disculpas por hacer mi consulta aca.
Alguien puede pasarme algún apunte que explique con ejemplos composicion- aplicación parcial y orden superior ? Muchas gracias!
14-04-2013 00:40
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
acuadro Sin conexión
Militante
volviendo al ruedo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 35
Agradecimientos: 4 en 4 posts
Registro en: Jan 2013
Mensaje: #9
RE: [Ayuda] Consulta Ejercicio Funcional
te fijaste en los apuntes de pdp.com.ar?

Composición

Orden Superior

Aplicación Parcial

o en la Wiki:
Composición
Orden Superior
Aplicación Parcial

;) Ojalá te sirva!


Off-topic:
BTW, para crear un nuevo tema, desde el foro en el que quieras preguntar, la barra de arriba de los threads tiene: Número de página del foro; Buscar en este foro; Nuevo Tema. thumbup3


Slds!
14-04-2013 08:03
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] acuadro recibio 1 Gracias por este post
laylen (15-04-2013)
Buscar en el tema
Enviar respuesta 




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



    This forum uses Lukasz Tkacz MyBB addons.