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