Skip to content

Commit 9106e37

Browse files
committed
simulacro parcial condicionales
1 parent 79b7cfc commit 9106e37

File tree

2 files changed

+172
-1
lines changed

2 files changed

+172
-1
lines changed

CLase3_15_23/simulacro.rkt

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
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+

Clase3_13_2023/ProblemaIntroduccionProgra1.rkt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,23 @@
1111
; De esta forma, la nota final de un estudiante que obtuvo las notas 3.0, 2.0, 4,5 y 3,2, sera 3.8. Haga un programa que
1212
; lea las 4 notas de un estudiante y calcule y escriba su nota definitiva.
1313

14-
;; entr
14+
;; entrada: 4 notas
15+
;; salida: nota definitiva
16+
;; proceso: calcular la nota definitiva
17+
18+
; definimos la funcion que elimine el menor de los 4 numeros con IF
19+
(define (menor x y z w)
20+
(if (< x y)
21+
(if (< x z)
22+
(if (< x w) x (menor y z w))
23+
(if (< z w) z (menor x y w)))
24+
(if (< y z)
25+
(if (< y w) y (menor x z w))
26+
(if (< z w) z (menor x y w)))))
27+
; definamos la funcion que la mayor nota dentro de las tres tendra un porcentaje del 50%
28+
29+
30+
31+
32+
33+

0 commit comments

Comments
 (0)