20241029 ProgrEstruct-Arrays-ejercicios_1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Demasiado, es fácil hasta para un examen, animando, hasta para un examen he dicho que es fácil.
00:00:00
A ver, venga, pues vamos allá.
00:00:10
Venga, pues todo el mundo conectado, sobre todo el que se sienta así un poquito más flojo.
00:00:28
el que vaya más sobrado pues que siga haciendo ejercicios
00:00:32
y ya está
00:00:35
a ver, vamos a leer n números
00:00:38
que hemos pedido previamente que nos digan cuantos
00:00:41
hasta ahí está claro
00:00:44
ahora, ¿qué vamos a hacer con cada uno de esos números?
00:00:45
en lugar de guardarlo en una variable primitiva suelta
00:00:49
guardarlo en posiciones consecutivas de un array
00:00:52
es decir, lo mismo que hemos hecho en los anteriores
00:00:55
recorrer un array con el for
00:00:58
y para cada posición asignarle un valor que hemos leído por teclado.
00:01:00
Bueno, pues entonces vamos a ir haciéndolo así por partes.
00:01:07
Entonces, como vamos a leer del teclado, pues el escáner.
00:01:10
Y ahora lo primero que tenemos que pedir es el tamaño del array.
00:01:23
Porque en este caso me han dicho que el número de valores que vamos a meter en el array
00:01:27
tengo que pedirlo previamente por teclado.
00:01:31
No me han dicho mete 10 números, mete 15, mete 20
00:01:33
Sino primero pregunta cuántos
00:01:36
Y luego ya los introduces
00:01:38
Pues venga, vamos a hacer
00:01:40
Primero una lectura
00:01:42
No le ponemos ni mensajito ni nada
00:01:43
Para ir rápido
00:01:46
Claro, porque
00:01:46
Estos de aquí arriba
00:01:57
Pues eran, vas a meter 5 exactamente
00:02:00
aquí te dicen, vas a meter
00:02:02
una cantidad que primero dile
00:02:05
¿cuántos quieres?
00:02:06
vamos a hacerle la pregunta para que quede
00:02:09
más claro a lo mejor qué significa ese valor
00:02:11
vale, entonces ahora ya sabemos
00:02:13
que vamos a meter exactamente
00:02:36
N mayúscula
00:02:38
los que sea que haya ahí dentro
00:02:40
no sabemos cuántos, bueno pues
00:02:42
entonces, vamos a necesitar
00:02:44
un array de números
00:02:47
enteros, vale
00:02:48
este es mi array, y vamos
00:02:52
a declarar espacio en memoria
00:02:54
para cuantos
00:02:56
para n mayúscula
00:02:58
entonces esta cantidad
00:02:59
es una concreta, la que
00:03:02
sea, una, porque aquí hay que
00:03:04
dar una cantidad fija, la que
00:03:06
sea, vale
00:03:08
y ahora ya que tenemos que hacer
00:03:09
recorrer este array
00:03:12
para hacer cosas con cada una
00:03:13
de sus posiciones. Recorrer un array para hacer cosas con cada
00:03:16
una de sus posiciones, pues siempre lo estamos haciendo así.
00:03:20
Vale, entonces, números de i será la primera posición,
00:03:33
perdón, números de i es todas y cada una de las posiciones
00:03:36
por las que vamos pasando. Pues, ¿qué vamos a hacer con cada números de i
00:03:40
en este caso? Con cada números de i
00:03:44
vamos a leer un número por teclado
00:03:48
y se lo vamos a asignar.
00:03:52
Bueno, pues este bucle
00:03:58
está solo
00:03:59
para recorrer este array que inicialmente
00:04:01
está vacío.
00:04:04
No tiene nada. La cajita
00:04:06
con las posiciones está creada. La cajita
00:04:07
con las n posiciones. Pero no tiene nada.
00:04:10
Y ahora con este for vamos
00:04:12
recorriendo posición por posición
00:04:14
y en cada posición estamos
00:04:16
asignando un valor leído por
00:04:18
teclado. Entonces este for está solo
00:04:20
para leer.
00:04:22
Ahora, este array
00:04:24
ya tiene valores en cada posición.
00:04:25
Ahora me dicen, ¿qué tengo que hacer con
00:04:28
esos valores? ¿Con esos valores qué tengo que hacer?
00:04:30
Pues sumarlos, restarlos, hacer
00:04:32
el máximo. ¿Qué tengo que hacer con esto?
00:04:33
Pues a mí
00:04:37
me dice que
00:04:38
vamos a mostrar
00:04:38
dos sumas. El resultado final es
00:04:41
mostrar dos valores, que es
00:04:43
la media de los pares,
00:04:45
que ya sabemos que es una suma,
00:04:48
dividida por un numerito después, pero una suma,
00:04:50
y la media de los que sean impares,
00:04:52
que ya sabemos que es una suma.
00:04:54
Luego el resultado de este ejercicio es mostrar dos valores.
00:04:55
Este voy a hacerlo como si fuera la suma y luego ya incorporo la división por el total para que sea la media,
00:05:01
pero primero voy a hacer como si fuera hacer la suma de los que son pares y la suma de los que son impares, que es más fácil.
00:05:10
Entonces vamos a hacer dos sumas de toda la vida.
00:05:15
Pues entonces dos sumas, dos variables que empiezan siendo 0, dos variables que empiezan siendo 0
00:05:17
Y ya está.
00:05:27
Y ahora, la suma acumulativa siempre es igual.
00:05:29
Aquí tendremos que hacer dos en paralelo.
00:05:33
Será esta operación.
00:05:36
Siempre es así.
00:05:39
Suma pares igual a suma pares más el sumando que sea.
00:05:40
¿No?
00:05:47
Y esto hacerlo un montón de veces.
00:05:49
Siendo x cada uno de los sumandos.
00:05:52
entonces ahora la pregunta es
00:05:55
cada sumando X
00:05:56
¿cómo lo genero? pues cada sumando X
00:05:58
es todos y cada uno
00:06:00
de los elementos del array
00:06:02
con lo cual para ir obteniendo
00:06:04
cada uno de esos sumandos
00:06:06
tendremos que recorrer el array otra vez
00:06:08
para ir obteniendo cada uno de esos
00:06:10
pues venga, vamos a recorrer el array
00:06:12
recorremos el array
00:06:14
porque los sumandos salen de ahí
00:06:22
salen de ahí
00:06:23
y ahora
00:06:26
vale, si dejamos esto así
00:06:30
está claro
00:06:38
lo que estaríamos haciendo, ¿no?
00:06:40
estaríamos sumando todos y cada uno
00:06:42
de los elementos del array, ¿verdad?
00:06:44
aquí
00:06:48
cada suma
00:06:48
no es con un valor que leo por teclado
00:06:49
ni es con un valor que voy generando yo
00:06:52
con algo, no, cada sumando
00:06:54
cada sumando es cada uno
00:06:56
de los elementos del array
00:06:58
bueno, este código dejado así
00:06:59
guardaría en suma pares
00:07:02
la suma de todos los elementos
00:07:04
del array
00:07:06
vale, pero en suma pares no queremos que estén
00:07:07
todos los elementos del array
00:07:10
queremos que estén solo los que
00:07:12
sean pares, ah vale, pues entonces
00:07:14
metemos esto en un if y me dice
00:07:16
oye, si números de i
00:07:18
es par, es decir
00:07:20
si lo divido entre 2
00:07:24
y me da 0
00:07:25
si es par, entonces sí
00:07:27
entonces sí
00:07:30
vale, pues entonces ahora ya sí que suma pares
00:07:31
es la suma de todos los elementos
00:07:36
del array, porque este bucle
00:07:38
va por todos ellos, uno
00:07:40
tras otro, uno tras otro, pero sólo
00:07:42
está acumulando, sólo está
00:07:44
usando como sumando estos, los que
00:07:46
cumplan esta condición. Vale, lo que pasa
00:07:48
es que tenemos que hacer dos sumas.
00:07:51
La de los pares, pero también la de los
00:07:54
impares. Bueno, pues en este
00:07:55
mismo for la incluimos.
00:07:57
Si números de i es par,
00:08:00
lo sumo a pares. Si no
00:08:01
es par, suponemos que es impar.
00:08:03
Solo hay dos opciones.
00:08:06
Vamos a dejar la cuestión de que 0 no es impar ni impar, nada.
00:08:07
Asumimos que están los pares y no los complicamos.
00:08:10
¿Vale?
00:08:29
Entonces, este bucle for de aquí, que termina ahí, este bucle for,
00:08:31
va recorriendo todas las posiciones números de i
00:08:35
con aquellas que sean pares, las integrará como sumando a suma pares
00:08:38
y las que no sean pares, las integrará como sumando en suma impares.
00:08:45
Ya está.
00:08:52
entonces es lo mismo
00:08:53
es una suma acumulativa
00:08:55
con sumandos
00:08:58
eso siempre es en un bucle
00:08:59
donde van llegando los sumandos
00:09:02
y luego ya la pregunta es
00:09:03
¿esos sumandos de dónde salen?
00:09:04
en este caso salen de las diferentes
00:09:07
posiciones de un array, salen de ahí
00:09:09
pues entonces mi bucle será el que
00:09:11
recorre el array y este sumando
00:09:13
será números de ahí
00:09:15
luego ya los sumo todos, no, todos no, los que cumplen una condición
00:09:16
pues se incorpora
00:09:20
entonces este código así puesto sin más
00:09:21
no me devuelve la media
00:09:27
sino me devuelve la suma
00:09:29
¿vale? la suma de todos los que sean pares
00:09:31
dentro del array y la suma de todos los que sean impares
00:09:33
no me devuelve la media
00:09:35
para hacer la media ya sabemos que tenemos que dividir
00:09:36
esta suma
00:09:39
por el total de números que realmente
00:09:40
hayan sido pares
00:09:43
¿vale? pues no pasa nada, vamos a contarlos
00:09:44
como ya hicimos en el ejercicio correspondiente
00:09:46
me voy a hacer un contador
00:09:49
de pares
00:09:51
que empieza valiendo 0
00:09:52
y ahora si números de i por 102 es igual a 0
00:09:57
pues además de hacer la suma de los pares
00:10:01
además de eso voy a contarlo
00:10:04
además de eso los cuento
00:10:07
¿vale?
00:10:10
entonces con esto estoy contando
00:10:16
cuántos números de la raíz realmente han sido números pares
00:10:19
es un contador de toda la vida
00:10:22
empieza siendo 0 y dentro de un bucle se va incrementando
00:10:23
Cuando yo tenga que contarlo
00:10:26
Que toque
00:10:28
No nos hace falta
00:10:30
Contarlo sin pares
00:10:33
Porque serán el total
00:10:34
N menos 2 pares
00:10:35
Bueno pues ahora ya una vez terminado el bucle
00:10:36
Y ya con
00:10:40
Y ya con la suma ya hecha
00:10:41
Una vez ya terminado todo
00:10:45
Ya podemos mostrar el resultado
00:10:47
Media pares
00:10:50
Media pares será
00:10:51
Suma pares
00:10:53
Entre el contador
00:10:55
Y la media impares será la suma impares entre el total de impares, que será el total, que era n mayúscula, menos los pares.
00:10:59
Voy a poner esto con paréntesis, claro, porque si no me lo cago.
00:11:29
Y si haces una...
00:11:33
También, ¿vale? Podría llevar en paralelo aquí con impares y dividir con impares y ya está, pero te va a dar n menos esto.
00:11:38
Bueno, pues ya está.
00:11:52
Entonces, tenemos claro cómo recorrer un array
00:11:54
y dentro de cada iteración
00:11:57
hacemos con cada elemento lo que toque hacer.
00:12:00
En este caso, ¿qué tocaba hacer con cada elemento?
00:12:02
Incorporarlo como sumando a esta suma
00:12:05
o incorporando como sumando a esta otra.
00:12:08
Pero cada vez tocará una cosa distinta.
00:12:11
Otra cosa, en el i menor, en vez de nombres len,
00:12:12
¿puedes poner n mayúscula?
00:12:15
Sí, en este caso puedes poner n mayúscula.
00:12:17
siempre puedes poner aquí el tamaño concreto
00:12:20
pero esto siempre es
00:12:23
más general, más genérico
00:12:25
¿vale? porque imagínate
00:12:26
que este código es muy largo
00:12:29
y en algún momento
00:12:31
este n te sirvió para rellenar
00:12:32
este tamaño
00:12:35
pero luego la aplicación ha reutilizado
00:12:36
esta variable para otra cosa
00:12:39
ha decidido reutilizarla para algo
00:12:40
entonces tú pones aquí el n
00:12:42
y el n ya no vale esto
00:12:44
entonces números length
00:12:47
siempre te va a funcionar sí o sí, pero la variable o el numerito
00:12:49
si ha cambiado, vale, pues nada, esto
00:12:53
funciona lógicamente, vamos a meterle 4 números solo
00:13:00
y ahora este, vale
00:13:06
pues la media de los pares 2, 4, la media es 3, y la media de los impares
00:13:10
3, 5, la media es 4, como estoy haciendo la división
00:13:15
entre enteros, me va a dar la división sin decimales, que en este caso era
00:13:19
punto cero igualmente, pero
00:13:22
si lo
00:13:24
guardara en double
00:13:26
entonces ya no
00:13:27
claro
00:13:30
pero vamos
00:13:31
vale, pues a ver
00:13:33
esto está claro, ¿no?
00:13:36
vamos a ver si encontramos algo
00:13:38
más interesante
00:13:40
¿el 4 es lo mismo?
00:13:41
es lo mismo
00:13:43
pero cambiar
00:13:44
por 102 entre mayor que 0
00:13:45
dime
00:13:48
que no te funciona
00:13:48
Pero que no te funciona exactamente
00:13:51
El código, la cabeza
00:13:55
O que, dame detalles
00:13:57
Le pones números y no te va
00:13:59
Pero tu código está bien
00:14:03
¿Cómo, cómo, cómo?
00:14:06
No
00:14:13
No puede estar igual
00:14:14
Igualdad de código es igualdad de funcionamiento
00:14:15
Aquí no existe la aleatoriedad
00:14:18
Hombre, a ver
00:14:21
tu ordenador podría introducir
00:14:25
una variante
00:14:27
pero en un código de cinco líneas
00:14:29
poca variante puede introducir
00:14:31
no, sí, sí has dicho
00:14:32
venga, vamos a buscar
00:14:38
alguno que nos dé un poco más de alegría
00:14:41
al cuerpo, ¿no? porque esto
00:14:44
a mí me dio dolor de cabeza
00:14:45
me la dio a mí
00:14:50
me la dio a mí
00:14:53
me la dio a mí
00:14:54
que la había hecho bien a la primera y fácil
00:14:57
Vale, hemos dicho que el 4 está claro
00:14:59
El 5
00:15:01
¿Os veis capaces de hacerlo?
00:15:03
A ver, ¿capaces sois?
00:15:09
Obviamente
00:15:10
Venga
00:15:11
5 minutos, el 5
00:15:14
Que no lo tenga hecho
00:15:16
Ánimo, alegría
00:15:18
Vale, entonces
00:15:20
Cada
00:15:23
vale, estas son las posiciones
00:15:32
esta
00:15:36
entonces, la posición 0
00:15:37
cuando i es igual a 0
00:15:40
queremos la 9
00:15:42
la 0 y la 9 también
00:15:44
pero cuando i es igual a 1
00:15:45
queremos la 8
00:15:48
pero cuando i es igual a 2
00:15:49
queremos la 7
00:15:52
pues una regla que podemos sacar es que
00:15:53
estos de aquí van a ser
00:15:56
siempre 9 menos i
00:15:58
siempre, cuando i es 0
00:15:59
9, justo, 9 menos 0
00:16:02
pero cuando i es 1, 8
00:16:03
9 menos 1, pero cuando
00:16:06
i es 2, 7, 9 menos 2
00:16:08
luego ya tenemos una regla
00:16:10
para sacar
00:16:12
el espejo de cada
00:16:14
una, ¿verdad?
00:16:16
entonces ahora recorremos
00:16:19
solo hasta la mitad
00:16:20
hasta la mitad y en cada
00:16:21
iteración sacamos esa
00:16:24
y el espejo, entonces aquí
00:16:25
el tema es eso, sacar la regla
00:16:28
que me permite, dado un i cualquiera
00:16:29
ver cuál tiene simétricamente
00:16:32
respecto al centro
00:16:34
y entonces, haciendo unas pequeñas pruebas
00:16:35
pues mirando y diciendo, ah, vale
00:16:38
pues si la simétrica de 0 es 9
00:16:40
y la simétrica de 1 es 8
00:16:42
y la simétrica de 2 es 7
00:16:44
pues la simétrica de un i cualquiera
00:16:46
¿cuál va a ser?
00:16:48
pues la simétrica de un i cualquiera es 9-1
00:16:49
¿vale?
00:16:52
entonces estas son las cosas pues que
00:16:54
se nos tienen que ocurrir
00:16:55
Haciendo las pruebas
00:16:57
Haciendo las cosas, mirando, analizando el problema
00:16:58
Por eso siempre lo del papelito
00:17:01
Y el lápiz es fundamental
00:17:03
Porque uno hace sus cosas
00:17:05
Ah, claro, pues si estoy viendo
00:17:07
Que 0 quiero que me lleve a 9
00:17:10
1 quiero que me lleve a 8
00:17:11
2 quiero que me lleve a 7
00:17:13
Entonces, 1 y cualquiera, ¿a cuál me llevará?
00:17:14
Pues con esto, 1 y cualquiera
00:17:18
Me va a llevar a 9 menos 7
00:17:19
¿Vale?
00:17:21
Menos 1 menos 7
00:17:23
Claro, entonces, nosotros ahora estamos poniendo 9 porque la RAI es de 10 posiciones, pero si hacemos esto en general, quien dice 9 dice números, punto len, menos 1, ¿no?
00:17:24
porque aquí el len sería 10
00:17:45
cuando el len es 10
00:17:47
las posiciones van de 0 a 9
00:17:49
cuando el 10 es 13
00:17:51
las posiciones van de 0 a 12
00:17:53
luego aquí van de 0 a 9
00:17:54
porque el len es 10
00:17:56
son 10 posiciones
00:17:58
luego 9 es en realidad
00:18:00
números de len menos 1
00:18:03
entonces esta regla la podemos generalizar
00:18:04
a números de len menos 1
00:18:07
entonces vamos a escribir el código
00:18:08
ahora ya con la idea pensada
00:18:11
escribimos el código y hacemos una primera prueba
00:18:14
a ver si nos funciona
00:18:18
pues con la idea pensada
00:18:18
entre dos
00:18:21
esto que tengo aquí puesto
00:18:26
a ver, es que se me ha llegado todavía
00:18:28
vale
00:18:30
¿dónde he puesto ahí? no he puesto yo un entre dos
00:18:31
a ver, lo que yo estoy diciendo ahí
00:18:34
es que recorres hasta la mitad
00:18:36
¿no? porque con cada uno
00:18:38
te llevas su simétrico
00:18:41
entonces el for lo tienes que parar en la mitad
00:18:42
lo tienes que parar en la mitad
00:18:45
claro, por eso el for
00:18:49
lo he parado aquí
00:18:51
para que no me llegue al total
00:18:53
a números menos uno, sino que me llegue
00:18:55
a la mitad
00:18:57
entonces, ahora ya
00:18:57
este fuera para rellenar
00:19:01
este es un for que recorro
00:19:02
hasta la mitad
00:19:04
del array
00:19:06
hasta la mitad, porque con cada posición
00:19:08
estoy
00:19:11
además mostrando
00:19:13
la simétrica, que hemos dicho que es esta.
00:19:15
Números led, menos 1, menos i.
00:19:18
Entonces, para cada i mostramos la suya y la simétrica.
00:19:21
Entonces, aquí la dificultad es sacar la regla
00:19:25
de la simétrica de cada i.
00:19:28
De la simétrica de cada i.
00:19:30
¿Vale? Pues entonces, ya hemos sacado la regla de la simétrica,
00:19:32
luego probamos esto.
00:19:37
Nos acordamos de que el for
00:19:40
tiene que llegar hasta la mitad solo.
00:19:42
y hacemos esta primera prueba
00:19:45
he mostrado el de posición i
00:19:48
y luego he mostrado
00:19:56
el simétrico
00:19:58
que es el de posición números led
00:19:59
menos uno menos i
00:20:01
separados con espacios para que se vea
00:20:02
vale
00:20:06
lo estoy poniendo
00:20:08
con print en lugar de con print el n
00:20:10
para verlos todos en una línea
00:20:12
y así luego el resultado lo veo más claro
00:20:13
porque si no están uno debajo de otro y se ve peor
00:20:15
vale, entonces he quitado el ln
00:20:18
Para que el print no me meta salto de línea
00:20:20
Y solo en la misma línea
00:20:22
Bueno, pues ejecutamos esto, que ya lo tenía lanzado
00:20:23
Meto los 10 números
00:20:26
Para que se vea bien que los intercala
00:20:27
9 y 10
00:20:30
Vale
00:20:35
Pues efectivamente me muestra
00:20:37
El primero, el último, el segundo
00:20:38
El antepenúltimo
00:20:41
Vale, los va mostrando así
00:20:42
Primero el primero que metí
00:20:44
Luego el último que metí
00:20:48
Luego el segundo que metí
00:20:49
Luego el penúltimo
00:20:51
vale, pues funciona
00:20:52
¿no?
00:20:55
entonces
00:20:58
esto es lo que muestro
00:20:58
el número es de i, el número es de len
00:21:07
menos uno menos i
00:21:09
espera un segundito, dime
00:21:09
¿estás usando?
00:21:12
a ver, pero estás poniendo
00:21:28
cero, nueve, uno
00:21:29
claro, pero entonces
00:21:32
¿Pero entonces no se hace uniforme?
00:21:32
Ah, pero para meterlos, pero para mostrarlo no.
00:21:37
Claro, pero entonces ahora la pregunta sería,
00:21:40
¿este ejercicio está hecho cuando son 10 posiciones?
00:21:43
Claro, pero si me dicen,
00:21:47
para una cantidad de posiciones cualesquiera,
00:21:49
claro, para una cantidad de posiciones cualesquiera,
00:21:53
tendríamos que plantearlo así, ¿no?
00:21:54
Bueno, vamos a parar de todas maneras aquí
00:21:56
y ahora lo...
00:21:57
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 9
- Fecha:
- 30 de octubre de 2024 - 17:09
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 22′ 01″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 92.86 MBytes