|
| 1 | +#lang racket |
| 2 | +;; programa 2 |
| 3 | +;; Realice el sigueinte programa en Racket |
| 4 | +;;se ofrece 4 terreno (rectangular) del cual se tiene: el largo, el ancho y el precio por metro cuadrado |
| 5 | +;; un cliente desea comprar los 4 lotes de la sguiente manera de mayor a menor precio y se realizan |
| 6 | +;; los siguientes descuentos: (lote 1 con un 10% de descuento < lote 2 con un 20% de descuento < lote 3 con un 30% de descuento y lote 4 con un 50% de descuento) |
| 7 | +;; determinar el valor total de los 4 lotes. |
| 8 | +;; realizar la mayor cantidad de funciones (minimo 4) |
| 9 | + |
| 10 | +;; definimos la funcion que calcula el area de un terreno |
| 11 | +(define (area_terreno largo ancho) |
| 12 | + (* largo ancho)) |
| 13 | + |
| 14 | + |
| 15 | +;; definimos la funcion menor que dos numeros |
| 16 | +(define (menor_2 a b) |
| 17 | + (if (< a b) |
| 18 | + a b)) |
| 19 | +;;definimos la funcion que menor que tres numeros |
| 20 | +(define (menor_3 a b c) |
| 21 | + (menor_2 (menor_2 a b) c)) |
| 22 | +;; definimos la funcion que menor que cuatro numeros |
| 23 | + |
| 24 | +(define (menor_4 a b c d) |
| 25 | + (menor_2 (menor_3 a b c) d)) |
| 26 | + |
| 27 | +;; definimos la funcion que calcula el valor de un terreno |
| 28 | +(define (valor_terreno largo ancho precio) |
| 29 | + (* (area_terreno largo ancho) precio)) |
| 30 | + |
| 31 | +;; definimos la funcion que calcula el descuento de un terreno basado en el area |
| 32 | +(define (descuento_terreno largo ancho precio) |
| 33 | + (if (equal? (menor_4 (area_terreno 5 4) (area_terreno 3 4) |
| 34 | + (area_terreno 3 3) (area_terreno 2 2)) (area_terreno 5 4)) |
| 35 | + (* (area_terreno largo ancho) (* precio 0.1)) |
| 36 | + (if (equal? (menor_4 (area_terreno 5 4) (area_terreno 3 4) |
| 37 | + (area_terreno 3 3) (area_terreno 2 2)) (area_terreno 3 4)) |
| 38 | + (* (area_terreno largo ancho) (* precio 0.2)) |
| 39 | + (if (equal? (menor_4 (area_terreno 5 4) (area_terreno 3 4) |
| 40 | + (area_terreno 3 3) (area_terreno 2 2)) (area_terreno 3 3)) |
| 41 | + (* (area_terreno largo ancho) (* precio 0.3)) |
| 42 | + (* (area_terreno largo ancho) (* precio 0.5))))) |
| 43 | + |
| 44 | + |
| 45 | +;; lote 1 = largo 5 ancho 4 precio 100 |
| 46 | +;; lote 2 = largo 3 ancho 4 precio 500 |
| 47 | +;; lote 3 = largo 3 ancho 3 precio 800 |
| 48 | + |
| 49 | +;; definiamos la funcion principal con los datos dados |
| 50 | + |
| 51 | +(define (main) |
| 52 | + (display "El valor total de los 4 lotes es: ") |
| 53 | + (display (+ (valor_terreno 5 4 100) (valor_terreno 3 4 500) (valor_terreno 3 3 800) (valor_terreno 3 3 800))) |
| 54 | + (newline) |
| 55 | + (display "El valor total de los 4 lotes con descuento es: ") |
| 56 | + (display (- (+ (valor_terreno 5 4 100) (valor_terreno 3 4 500) (valor_terreno 3 3 800) |
| 57 | + (valor_terreno 2 2 1000)) (+ (descuento_terreno 5 4 100) (descuento_terreno 3 4 500) |
| 58 | + (descuento_terreno 3 3 800) (descuento_terreno 2 2 1000)))) |
| 59 | + (newline) |
| 60 | + ) |
| 61 | + |
| 62 | + |
| 63 | +;; llamamos la funcion main |
| 64 | +(main) |
| 65 | + |
| 66 | +;; programa 3 |
| 67 | +;; Realice el sigueinte programa en Racket |
| 68 | +;; un programa que muestre el numero en lerasa de 1 a 999 a traves de composicion de funciones |
| 69 | + |
| 70 | +;; definimos la funcion que convierte un numero en letras |
| 71 | + |
| 72 | +;; definimos la unidades utilizando if |
| 73 | + |
| 74 | +(define (unidades n) |
| 75 | + (if (equal? n 1) "uno" |
| 76 | + (if (equal? n 2) "dos" |
| 77 | + (if (equal? n 3) "tres" |
| 78 | + (if (equal? n 4) "cuatro" |
| 79 | + (if (equal? n 5) "cinco" |
| 80 | + (if (equal? n 6) "seis" |
| 81 | + (if (equal? n 7) "siete" |
| 82 | + (if (equal? n 8) "ocho" |
| 83 | + (if (equal? n 9) "nueve" |
| 84 | + "cero")))))))))) |
| 85 | + |
| 86 | +;; definimos la funcion de decenas |
| 87 | +(define (decenas n) |
| 88 | +(if (equal? n 1) "diez" |
| 89 | + (if (equal? n 2) "veinte" |
| 90 | + (if (equal? n 3) "treinta" |
| 91 | + (if (equal? n 4) "cuarenta" |
| 92 | + (if (equal? n 5) "cincuenta" |
| 93 | + (if (equal? n 6) "sesenta" |
| 94 | + (if (equal? n 7) "setenta" |
| 95 | + (if (equal? n 8) "ochenta" |
| 96 | + (if (equal? n 9) "noventa" |
| 97 | + "cero")))))))))) |
| 98 | + |
| 99 | +;; definimos centenas |
| 100 | +(define (centenas n) |
| 101 | +(if (equal? n 1) "cien" |
| 102 | + (if (equal? n 2) "doscientos" |
| 103 | + (if (equal? n 3) "trescientos" |
| 104 | + (if (equal? n 4) "cuatrocientos" |
| 105 | + (if (equal? n 5) "quinientos" |
| 106 | + (if (equal? n 6) "seiscientos" |
| 107 | + (if (equal? n 7) "setecientos" |
| 108 | + (if (equal? n 8) "ochocientos" |
| 109 | + (if (equal? n 9) "novecientos" |
| 110 | + "cero")))))))))) |
| 111 | + |
| 112 | +;; definimos la funcion que determina las unidades decenas y centenas de un numero |
| 113 | + |
| 114 | +(define (detector_digitos n) ; n es un numero entero |
| 115 | + (define cent (quotient n 100)) ; cent es el numero de centenas de n quotient |
| 116 | + (define dec (quotient (remainder n 100) 10)) |
| 117 | + (define uni (remainder n 10)) |
| 118 | + (if (= n 0) |
| 119 | + "cero" |
| 120 | + (string-append |
| 121 | + (if (= n 100) |
| 122 | + (centenas cent) |
| 123 | + (if (< n 100) |
| 124 | + (unidades uni) |
| 125 | + (centenas cent))) |
| 126 | + (if (and (not (= dec 0)) (not (= dec 1))) |
| 127 | + (string-append " " (decenas dec)) |
| 128 | + "") |
| 129 | + (if (and (not (= dec 1)) (not (= uni 0))) |
| 130 | + (string-append " " (unidades uni)) |
| 131 | + (if (= dec 1) |
| 132 | + (string-append " " (decenas (+ 1 uni))) |
| 133 | + ""))))) |
| 134 | + |
| 135 | +;; definimos la funcion que convierte un numero en letras |
| 136 | +(define (num_a_letras n) |
| 137 | + (detector_digitos n)) |
| 138 | + |
| 139 | +;; definimos la funcion principal que reciba un numero de 1 a 999 y lo muestre en letras |
| 140 | +(define (main) |
| 141 | + (display "Ingrese un numero de 1 a 999: ") |
| 142 | + (define n (read)) |
| 143 | + (display (num_a_letras n)) |
| 144 | + (newline) |
| 145 | + ) |
| 146 | + |
| 147 | +;; llamamos la funcion main |
| 148 | +(main) |
| 149 | + |
| 150 | + |
| 151 | + |
| 152 | + |
0 commit comments