Skip to content

Commit

Permalink
funcoes: adiciona o exemplo imposto
Browse files Browse the repository at this point in the history
  • Loading branch information
malbarbo committed Sep 26, 2020
1 parent 1c8afcf commit 8b41ca6
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions 03-funcoes/exemplos.rkt
Expand Up @@ -38,3 +38,35 @@
(string-length b))
a
b))

; Cada cidadão de um país, cuja moeda chama dinheiro,
; tem que pagar imposto sobre a sua renda.
; Cidadãos que recebem até 1000 dinheiros pagam 5% de
; imposto. Cidadãos que recebem entre 1000 e 5000
; dinheiros pagam 5% de imposto sobre 1000 dinheiros e
; 10% sobre o que passar de 1000. Cidadãos que recebem
; mais do 5000 dinheiros pagam 5% de imposto sobre 1000
; dinheiros, 10% de imposto sobre 4000 dinheiros e 20%
; sobre o que passar de 5000. Projete uma função que
; calcule o imposto que um cidadão deve pagar dado a
; sua renda.

;; Número -> Número
;; Calcula o imposto que um pessoa com a renda r deve
;; pagar.
(examples
; Até 1000 (inclusive)
(check-equal? (calcula-imposto 900.0) 45.0) ; (* 900 0.05)
(check-equal? (calcula-imposto 1000.0) 50.0) ; (* 1000 0.05)
; Entre 1000 e 5000 (inclusive)
(check-equal? (calcula-imposto 3000.0) 250.0) ; (+ 50 (* (- 3000 1000) 0.1))
(check-equal? (calcula-imposto 5000.0) 450.0) ; (+ 50 (* (- 5000 1000) 0.1))
; Mais do que 5000
(check-equal? (calcula-imposto 10000.0) 1450.0)) ; (+ 450 (* (- 10000 5000) 0.2))

; (define (calcula-imposto r) 0) ; esboço

(define (calcula-imposto r)
(cond [(<= r 1000) (* r 0.05)]
[(<= r 5000) (+ 50 (* (- r 1000) 0.1))]
[else (+ 450 (* (- r 5000) 0.2))]))

0 comments on commit 8b41ca6

Please sign in to comment.