martes, 3 de diciembre de 2013

diferencia Cususucu

aca dejo el sript de la diferencia cususucu en scheme , si bien no lo tomaron como correcto capaz sirve para ver como anda scheme y lo facil que es hacer funciones matematicas iterativas.




(define (multi-display L);muestra una lista de manera mas 'linda'
  (if (null?  L )
      (display "")
      (begin  (newline) (display (car L)) (multi-display (cdr L)))
   )
  )

(define (read-em x);lee N elementos del stdin A.K.A. teclado
 
(if (eq? x 0)
   '()
    (append (list(read)) (read-em (- x 1) ))
    )
)

(define (suma1 x); suma de los cuadrados hasta x (posiblemente por esto no anduvo, hubiese sido mejor una recursion por cola)
 (if (eq? x 0)
     0
     (+ (expt x 2) (suma1 (- x 1) ) ))
 )


(define (suma2 x); suma de los x primeros numeros (con la eq de gauss)
 (/(* x (+ x 1) )2)
 )

(define (cusu x); diferencia cususucu para x
  (- (expt (suma2 x) 2) (suma1 x) )
  )

(define (cusu-lim lim beg) ; esta funcion da el numero cuya diferencia cususucu es menor que lim, pero la mas cercana
  (if (> (cusu beg) lim )
      (- beg 1)
      (cusu-lim lim (+ beg 1))
      )
)


        
(define (principal)

 (begin (map (lambda(x)(begin(display (cusu-lim x 0)) (newline))) (read-em (read))) (newline))
)



(principal) ;importante, en scheme si queres que el programa corra de una tenes que poner las funciones que queres que se ejecuten, algo asi como el main de C.

No hay comentarios:

Publicar un comentario