Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 6.91 KB | None | 0 0
  1.  
  2.  
  3. ;;Ex4
  4.  
  5. (define lista1 (list 2 5 3 6 1 4))
  6.  
  7. ;;Ex1:
  8. (define-struct pessoa (nome ano pai mae))
  9. ;; Um parente é:
  10. ;; empty ou
  11. ;; (make-pessoa n a p m), onde:
  12. ;; n: String, nome
  13. ;; a: Número, idade
  14. ;; p: pessoa, pai
  15. ;; m: pessoa, mãe
  16.  
  17. (define joa(make-pessoa 'joao 50
  18.              (make-pessoa 'julia 40
  19.                          (make-pessoa 'lucian 23 empty empty) (make-pessoa 'jiboia 9 empty empty))
  20.              (make-pessoa 'carla 30 empty (make-pessoa 'lucas 10 empty empty))))
  21.  
  22. ;;soma-idade: parente -> Número
  23. ;; Obj.: Dado um parente, soma idade dele mesmo e todos os seus parentes.
  24. ;; Exemplo:
  25. ;; (soma-idade joao) -> 162
  26. ;; (soma-idade empty) -> 0
  27. (define (soma-idade parente)
  28.   (cond
  29.     [(empty? parente) 0]
  30.     [else (+ (pessoa-ano parente) (soma-idade (pessoa-pai parente)) (soma-idade (pessoa-mae parente)))]))
  31.  
  32. (check-expect (soma-idade joa) 162)
  33. (check-expect (soma-idade empty) 0)
  34.  
  35. ;;conta-parentes: parente -> Número
  36. ;; Obj.: Dado um parente, conta o número de parentes incluindo ele mesmo.
  37. ;; Exemplo:
  38. ;; (conta-parentes joa) -> 6
  39. ;; (conta-parentes empty) -> 0
  40. (define (conta-parentes parente)
  41.   (cond
  42.     [(empty? parente) 0]
  43.     [else (+ 1 (conta-parentes (pessoa-pai parente)) (conta-parentes (pessoa-mae parente)))]))
  44.  
  45. (check-expect (conta-parentes joa) 6)
  46. (check-expect (conta-parentes empty) 0)
  47.  
  48. ;;idade-média: parente -> Número
  49. ;; Obj.: Dado um parente, faz a média das idades de todos os seus parentes incluindo ele mesmo.
  50. ;; Exemplo:
  51. ;; (idade-média joa) ->
  52. ;; (idade-média empty) -> 0
  53. (define (idade-média parente)
  54.   (cond
  55.     [(empty? parente) 0]
  56.     [else (/ (soma-idade parente) (conta-parentes parente))]))
  57.  
  58. (check-expect (idade-média joa) 27)
  59. (check-expect (idade-média empty) 0)
  60.  
  61. ;;Ex2:
  62. (define-struct registro (nome cod telefone esq dir))
  63. ;;um elem. do conjunto registro é:
  64. ;; (make-registro n c t e d), onde:
  65. ;; n: String
  66. ;; c: Número
  67. ;; t: Número
  68. ;; e, d: registro
  69.  
  70. ;; um nó é:
  71. ;; empty ou registro
  72.  
  73. ;; uma ABP é:
  74. ;; empty ou nó
  75.  
  76. ;;ABP1:
  77. (define leo   (make-registro 'leo 80 666 empty empty))
  78. (define julia (make-registro 'julia 92 555 empty empty))
  79. (define maria (make-registro 'maria 90 888 leo julia))
  80. (define julio (make-registro 'julio 110 777 empty empty))
  81. (define joao (make-registro 'joao 100 999 maria julio))
  82.  
  83. ;;ABP2:
  84. (define leo2   (make-registro 'leo 80 123 empty empty))
  85. (define julia2 (make-registro 'julia 92 555 empty empty))
  86. (define maria2 (make-registro 'maria 90 888 leo2 julia2))
  87. (define julio2 (make-registro 'julio 110 777 empty empty))
  88. (define joao2 (make-registro 'joao 100 999 maria2 julio2))
  89.  
  90. ;;ABP3:
  91. ;;empty
  92.  
  93. ;;existe? ABP Número -> Booleano
  94. ;; Obj.: Dado uma ABP e um código,
  95. ;; retorna um booleano informando se existe um nó cuja estrutura de registro possua o código informado.
  96. ;; Exemplos:
  97. ;; (existe? ABP1 100) -> #true
  98. ;; (existe? ABP1 900) -> #false
  99. ;; (existe? ABP3 100) -> #false
  100. (define (existe? abp cod)
  101.   (cond
  102.     [(empty? abp) #false]
  103.     [(> cod (registro-cod abp)) (existe? (registro-dir abp) cod)]
  104.     [(< cod (registro-cod abp)) (existe? (registro-esq abp) cod)]
  105.     [else #true]))
  106.  
  107.  
  108. ;;troca: ABP Número Número -> ABP
  109. ;; Obj.: Dada uma ABP, um telefone e um código, troca o telefone de determinado nó da abp pelo telefone passado e manda reconstruir a ABP.
  110. (define (troca abp tel cod)
  111.   (make-registro (registro-nome abp) (registro-cod abp) tel (reconstrói (registro-esq abp) tel cod) (reconstrói (registro-dir abp) tel cod)))
  112.  
  113. ;;reconstrói: ABP Número Número -> ABP
  114. ;; Obj.: Dada uma ABP, um telefone e um código, verifica se o nó atual de verificação possui o código informado, caso sim, chama a função
  115. ;; troca para trocar o telefone. Se não, apenas continua reconstruindo a ABP.
  116. (define (reconstrói abp tel cod)
  117.   (cond
  118.     [(empty? abp) empty]
  119.     [(= cod (registro-cod abp)) (troca abp tel cod)]
  120.     [else (make-registro (registro-nome abp) (registro-cod abp) (registro-telefone abp) (reconstrói (registro-esq abp) tel cod) (reconstrói(registro-dir abp) tel cod))]))
  121.  
  122.  
  123. ;;substitui-telefone: ABP Número Número -> ABP
  124. ;; Obj.: Dada uma abp, um telefone e um código, substitui o telefone do registro com o código passado caso existe e devolve a abp atualizada.
  125. ;; Exemplos:
  126. ;; (substitui-telefone ABP1 123 80) -> ABP2
  127. ;; (substitui-telefone ABP2 123 66) -> ABP2
  128. ;; (substitui-telefone ABP3 123 80) -> ABP3
  129.  
  130. (define (substitui-telefone abp tel cod)
  131.   (cond
  132.     [(empty? abp) empty]
  133.     [(existe? abp cod) (reconstrói abp tel cod)]
  134.     [else abp]))
  135.  
  136. ;;testes:
  137. (check-expect (substitui-telefone joao 123 80) joao2)
  138. (check-expect (substitui-telefone joao2 123 66) joao2)
  139. (check-expect (substitui-telefone empty 123 80) empty)
  140.  
  141.  
  142. ;;Ex3
  143.  
  144. ;; Uma página-web é:
  145. ;; empty ou
  146. ;; (cons s wp), onde s é um símbolo e wp é uma página web ou
  147. ;; (cons ewp wp), onde ewp e wp são págionas web
  148.  
  149. (define pag1 (list 'a 'b 'c (list 'c (list 'c (list 'c (list 'c (list 'c 'c 'c) 'c) 'c 'c) 'c 'c 'c 'c) 'c 'c (list 'c)) 'c 'c 'c 'a 'b (list 'a (list 'a 'b))))
  150. (define pag2 empty)
  151.  
  152. ;; conta: página-web Símbolo -> Número
  153. ;; Obj.: Dado uma página web e um símbolo, conta o número de ocorrências desse símbolo na página web passada.
  154. ;; Exemplos:
  155. ;; (conta pag1 'c) -> 21
  156. ;; (conta pag1 'a) -> 4
  157. ;; (conta pag1 'b) -> 3
  158. ;; (conta pag1 'x) -> 0
  159. ;; (conta pag2 'a) -> 0
  160. (define (conta p s)
  161.   (cond
  162.     [(empty? p) 0]
  163.     [(list? (first p)) (+ (conta (first p) s) (conta (rest p) s))]
  164.     [else
  165.      (cond
  166.        [(symbol=? s (first p)) (+ 1 (conta (rest p) s))]
  167.        [else (conta (rest p) s)])]))
  168.  
  169. (check-expect (conta pag1 'c) 21)
  170. (check-expect (conta pag1 'a) 4)
  171. (check-expect (conta pag1 'b) 3)
  172. (check-expect (conta pag1 'x) 0)
  173. (check-expect (conta pag2 'a) 0)
  174. ;;criteriozador Lista-de-Número Número -> Número
  175. ;;Obj.: Dado um número e uma lista e o primeiro número dessa lista inicialmente, retorna o maior elemento da lista.
  176. ;;Exemplo:
  177. ;; (criteriozador lista1 1) -> 6
  178. (define (criteriozador lista selecionado criterio)
  179.   (cond
  180.    
  181.     [else (cond
  182.             [(criterio (first lista) selecionado) (criteriozador (rest lista) (first lista) criterio)]
  183.             [else (criteriozador (rest lista) selecionado criterio)])]))
  184.  
  185. (define (remove-selecionado ldn selecionado)
  186.   (cond
  187.     [(= selecionado (first ldn)) (rest ldn)]
  188.     [else (cons (first ldn) (remove-selecionado (rest ldn) selecionado))]))
  189.  
  190. ;;selection-sort: Lista-de-Número ? -> Lista-de-Número
  191. ;; Obj.: Dada uma lista de números, ordena com base num critério(> ou <)
  192.  
  193. (define (selection-sort ldn criterio)
  194.   (cond
  195.     [(empty? ldn) empty]
  196.     [else (cons (criteriozador ldn (first ldn) criterio)
  197.                 (selection-sort (remove-selecionado ldn (criteriozador ldn (first ldn) criterio)) criterio))]))
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206. (define (r l s)
  207.   (cond
  208.     [(empty? l) empty]
  209.     [(= s (first l)) (rest l)]
  210.     [else (cons (first l) (r (rest l)))]))
  211.  
  212. (define (k c l s)
  213.   ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement