Skip to content

Commit 3856bfd

Browse files
committed
Solucion quiz
1 parent 26ce01e commit 3856bfd

File tree

1 file changed

+247
-0
lines changed

1 file changed

+247
-0
lines changed
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
;;QUIZ Jose Felipe Duarte Coronado
2+
3+
; Invertir un vector en otro vector
4+
; Ejemplo: vec#(11,2,3,4,5,60) vec_inv#(60,5,4,3,2,11)
5+
6+
; Función principal para leer datos del usuario y mostrar resultados
7+
(define (vector-invertido)
8+
(begin
9+
(display "Ingrese el tamaño del vector")
10+
(newline)
11+
(define vec (make-vector (read)))
12+
(display "Ingrese cada uno de los datos")
13+
(newline)
14+
(llenar-vector vec 0)
15+
(newline)
16+
(display "Vector original: ")
17+
(display vec)
18+
(newline)
19+
(display "Vector invertido: ")
20+
(display (invertir-vector vec))))
21+
22+
; Función para llenar un vector con datos ingresados por el usuario
23+
(define (llenar-vector v pos)
24+
(if (< pos (vector-length v))
25+
(begin
26+
(vector-set! v pos (read))
27+
(llenar-vector v (+ pos 1)))))
28+
29+
; Función para invertir un vector en otro vector
30+
(define (invertir-vector vec)
31+
(invertir-vector-aux vec (make-vector (vector-length vec)) (sub1 (vector-length vec)) 0))
32+
33+
; Función auxiliar para invertir el vector
34+
(define (invertir-vector-aux vec vec-inv pos-orig pos-inv)
35+
(if (>= pos-orig 0)
36+
(begin
37+
(vector-set! vec-inv pos-inv (vector-ref vec pos-orig))
38+
(invertir-vector-aux vec vec-inv (sub1 pos-orig) (+ pos-inv 1)))
39+
vec-inv))
40+
41+
(vector-invertido)
42+
43+
;-----------------------------------------------------------------------------
44+
; Problema 2
45+
; Sumar dos vectores y colocar el resultado en un tercer vector
46+
; Ejemplo: vec1#(1,2,3,4,5) vec2#(6,7,8,9,10) vec3#(7,9,11,13,15)
47+
48+
; Función principal para leer datos del usuario y mostrar resultados
49+
(define (suma-vectores)
50+
(begin
51+
(display "Ingrese el tamaño de los vectores")
52+
(newline)
53+
(define n (read))
54+
(define vec1 (make-vector n))
55+
(define vec2 (make-vector n))
56+
(display "Ingrese los elementos del primer vector")
57+
(newline)
58+
(llenar-vector vec1 0)
59+
(display "Ingrese los elementos del segundo vector")
60+
(newline)
61+
(llenar-vector vec2 0)
62+
(newline)
63+
(define vec3 (sumar-vectores-aux vec1 vec2 n))
64+
(display "Vector 1: ")
65+
(display vec1)
66+
(newline)
67+
(display "Vector 2: ")
68+
(display vec2)
69+
(newline)
70+
(display "Vector suma: ")
71+
(display vec3)))
72+
73+
; Función para llenar un vector con datos ingresados por el usuario
74+
(define (llenar-vector v pos)
75+
(if (< pos (vector-length v))
76+
(begin
77+
(vector-set! v pos (read))
78+
(llenar-vector v (+ pos 1)))))
79+
80+
; Función para sumar dos vectores y almacenar el resultado en un tercer vector
81+
(define (sumar-vectores-aux vec1 vec2 n)
82+
(define vec3 (make-vector n))
83+
(sumar-vectores-rec vec1 vec2 vec3 0)
84+
vec3)
85+
86+
; Función recursiva para sumar elementos de los vectores y guardarlos en el tercer vector
87+
(define (sumar-vectores-rec vec1 vec2 vec3 pos)
88+
(if (< pos (vector-length vec1))
89+
(begin
90+
(vector-set! vec3 pos (+ (vector-ref vec1 pos) (vector-ref vec2 pos)))
91+
(sumar-vectores-rec vec1 vec2 vec3 (+ pos 1)))))
92+
93+
(suma-vectores)
94+
95+
;;-----------------------------------------------------------------------
96+
; Problema 3
97+
; Llenar un vector de tamaño n con números de 1 al 5 y contar cuántas veces se repite cada número
98+
; Ejemplo:
99+
; n = 9
100+
; #(1,1,1,1,5,5,1,3,4)
101+
; 1 se repite 5
102+
; 2 se repite 0
103+
; 3 se repite 1
104+
; 4 se repite 1
105+
; 5 se repite 2
106+
107+
; Función principal para leer datos del usuario y mostrar resultados
108+
(define (contar-repeticiones)
109+
(display "Ingrese el tamaño del vector")
110+
(newline)
111+
(llenar-vector (make-vector (read)) 0))
112+
113+
; Función para llenar un vector con datos ingresados por el usuario
114+
(define (llenar-vector v pos)
115+
(cond
116+
[(< pos (vector-length v))
117+
(display "Ingrese un número entre 1 y 5: ")
118+
(validar-numero v pos (read))]
119+
120+
[else
121+
(display "Vector: ")
122+
(display v)
123+
(newline)
124+
(contar-numeros v 1)]))
125+
126+
; Función auxiliar para validar y guardar el número ingresado
127+
(define (validar-numero v pos num)
128+
(if (and (>= num 1) (<= num 5))
129+
(begin
130+
(vector-set! v pos num)
131+
(llenar-vector v (+ pos 1)))
132+
(begin
133+
(display "Error: Solo números entre 1 y 5.")
134+
(newline)
135+
(llenar-vector v pos))))
136+
137+
; Función para contar la cantidad de veces que se repiten los números del 1 al 5 en el vector
138+
(define (contar-numeros vec num)
139+
(if (<= num 5)
140+
(begin
141+
(display "Número ")
142+
(display num)
143+
(display " se repite ")
144+
(display (contar-ocurrencias vec num 0))
145+
(display " veces")
146+
(newline)
147+
(contar-numeros vec (+ num 1)))))
148+
149+
; Función auxiliar para contar la cantidad de veces que se repite un número en el vector
150+
(define (contar-ocurrencias vec num pos)
151+
(if (= pos (vector-length vec))
152+
0
153+
(if (= (vector-ref vec pos) num)
154+
(+ 1 (contar-ocurrencias vec num (+ pos 1)))
155+
(contar-ocurrencias vec num (+ pos 1)))))
156+
157+
(contar-repeticiones)
158+
159+
;-----------------------------------------------------------------------------
160+
; Problema 4
161+
;Llenar la serie de fibonacci en un vector de tamaño n
162+
; Ejemplo:
163+
; n = 10
164+
; #(1,1,2,3,5,8,13,21,34,55)
165+
166+
; Función principal para leer datos del usuario y mostrar resultados
167+
(define (fibonacci)
168+
(display "Ingrese el tamaño del vector")
169+
(newline)
170+
(display (fibonacci-aux (read))))
171+
172+
; Función para llenar un vector con datos ingresados por el usuario
173+
(define (fibonacci-aux n)
174+
(define vec (make-vector n))
175+
(fibonacci-rec vec 0)
176+
vec)
177+
178+
; Función recursiva para llenar el vector con la serie de fibonacci
179+
(define (fibonacci-rec vec pos)
180+
(if (< pos (vector-length vec))
181+
(begin
182+
(vector-set! vec pos (fibonacci-num pos))
183+
(fibonacci-rec vec (+ pos 1)))))
184+
185+
; Función para calcular el número de fibonacci en la posición n
186+
(define (fibonacci-num n)
187+
(if (or (= n 0) (= n 1))
188+
1
189+
(+ (fibonacci-num (- n 1)) (fibonacci-num (- n 2)))))
190+
191+
(fibonacci)
192+
193+
;;-----------------------------------------------------------------------
194+
; Problema 5
195+
; Llenar un vector con los numeros primos
196+
; Ejemplo:
197+
; n = 10
198+
; #(2,3,5,7,11,13,17,19,23,29)
199+
; Problema 5
200+
; Llenar un vector con los números primos
201+
; Ejemplo:
202+
; n = 10
203+
; #(2,3,5,7,11,13,17,19,23,29)
204+
205+
; Función principal para leer datos del usuario y mostrar resultados
206+
(define (vector-primos)
207+
(display "Ingrese el tamaño del vector: ")
208+
(newline)
209+
(llenar-primos (make-vector (read)) 0 2))
210+
211+
; Función para llenar el vector con números primos
212+
; Parámetros:
213+
; - vec: vector que se llenará con números primos
214+
; - pos: posición actual en el vector
215+
; - num: número a verificar si es primo
216+
(define (llenar-primos vec pos num)
217+
(cond
218+
[(< pos (vector-length vec))
219+
(if (es-primo? num)
220+
(begin
221+
(vector-set! vec pos num)
222+
(llenar-primos vec (+ pos 1) (+ num 1)))
223+
(llenar-primos vec pos (+ num 1)))]
224+
225+
[else
226+
(display "Vector de primos: ")
227+
(display vec)]))
228+
229+
; Función para determinar si un número es primo
230+
; Parámetros:
231+
; - num: número a verificar si es primo
232+
(define (es-primo? num)
233+
(if (= num 2)
234+
#t
235+
(primo-aux num (- num 1))))
236+
237+
; Función auxiliar para determinar si un número es primo mediante la división
238+
; Parámetros:
239+
; - num: número a verificar si es primo
240+
; - div: divisor actual
241+
(define (primo-aux num div)
242+
(cond
243+
[(= div 1) #t]
244+
[(= (remainder num div) 0) #f]
245+
[else (primo-aux num (- div 1))]))
246+
247+
(vector-primos)

0 commit comments

Comments
 (0)