Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 2.20 KB | None | 0 0
  1. (define conta-letras
  2.   (lambda (frase letra)
  3.     (letrec((aux
  4.              (lambda (i contador)
  5.                (if(equal? i (string-length frase))
  6.                    contador
  7.                    (if(char-ci=? letra (string-ref frase i))
  8.                       (aux (add1 i) (add1 contador))
  9.                       (aux (add1 i) contador))))))
  10.       (aux 0 0))))
  11.  
  12. (define nomes (vector "Aa" "a" "A"))
  13.  
  14. (define conta-vogais
  15.   (lambda (v)
  16.     (letrec((aux
  17.              (lambda (v1 i j)
  18.                (if(equal? j (vector-length v))
  19.                   v1
  20.                   (if(equal? i (string-length (vector-ref v j)))
  21.                      (aux v1 0 (add1 j))
  22.                      (begin
  23.                        (cond
  24.                          ((char-ci=? (string-ref (vector-ref v j) i) #\a) (vector-set! v1 0 (add1 (vector-ref v1 0))))
  25.                          ((char-ci=? (string-ref (vector-ref v j) i) #\e) (vector-set! v1 1 (add1 (vector-ref v1 1))))
  26.                          ((char-ci=? (string-ref (vector-ref v j) i) #\i) (vector-set! v1 2 (add1 (vector-ref v1 2))))
  27.                          ((char-ci=? (string-ref (vector-ref v j) i) #\o) (vector-set! v1 3 (add1 (vector-ref v1 3))))
  28.                          ((char-ci=? (string-ref (vector-ref v j) i) #\u) (vector-set! v1 4 (add1 (vector-ref v1 4)))))
  29.                        (aux v1 (add1 i) j)))))))
  30.       (aux (vector 0 0 0 0 0) 0 0))))
  31.  
  32. (define delete
  33.   (lambda (item list)
  34.     (cond
  35.      ((equal? item (car list)) (cdr list))
  36.      (else (cons (car list) (delete item (cdr list)))))))
  37.  
  38.  
  39.  
  40. (define acumula!
  41.   (lambda (lista)
  42.     (letrec((aux
  43.              (lambda(i j)
  44.                (if(not(equal? j (length lista)))
  45.                   (if(equal? (+ i j) (length lista))
  46.                      (aux 1 (add1 j))
  47.                      (if(equal? (car (list-ref lista j)) (car (list-ref lista (+ i j))))
  48.                         (begin
  49.                           (set-cdr! (list-ref lista j) (+ (cdr (list-ref lista j)) (cdr (list-ref lista (+ i j)))))
  50.                           (set-cdr! lista (delete (list-ref lista (+ i j)) (cdr lista)))
  51.                           (aux i j))
  52.                         (aux (add1 i) j)))))))
  53.             (aux 1 0))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement