Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.50 KB | None | 0 0
  1. #|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. HW4 #5 A
  3. ScalarProductDoLoop.rkt by Ryan Liszewski
  4. Calculates the scalar product of the given 2 vectors using a do loop
  5. produces an error message when the vectors have different lengths or is empty
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|#
  7. #lang racket
  8. (define scalar-product
  9.   (lambda (x y)
  10.     (cond((= (vector-length x) (vector-length y))
  11.            (let ((z 0))
  12.                   (do ((i 0 (add1 i)))
  13.                     ((>= i (vector-length x)) (display z))
  14.                     (set! z
  15.                           (+ z (* (vector-ref x i) (vector-ref y i)))))))
  16.           (else (display "Error: different sizes of vectors!")))))
  17.  
  18.  
  19. #|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  20. HW4 #5 B
  21. ScalarProductRecursive.rkt by Ryan Liszewski
  22. Calculates the scalar product of the given 2 vectors using recursion
  23. produces an error message when the vectors have different lengths
  24. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|#
  25. #lang racket
  26. (define scalar-product
  27.   (lambda (x y)
  28.     ;If they equal the same size
  29.     (cond ((= (vector-length x) (vector-length y))
  30.             ;FInd scalar product
  31.            (recur (vector->list x) (vector->list y)))
  32.            ;else the size are not the same
  33.           (else (display "Error: different sizes of vectors!")))))
  34. ;Calls function recursively
  35. (define recur
  36.     (lambda (list1 list2)
  37.       (cond ((null? (cdr list1)) (* (car list1) (car list2)))
  38.             (else (+ (* (car list1) (car list2))
  39.                      (recur (cdr list1) (cdr list2)))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement