Está en la página 1de 21

Algoritmos

Autor: J os ngel Acosta Rodrguez



2006

Algoritmos Jos ngel Acosta Rodrguez

NDICE







Pgina


ndice 1

Problema 1. Movimiento de figuras geomtricas .2

Problema 2. Conversin decimal a binario ....3

Problema 3. Secuencias binarias ..4

Problema 4. Conversin a binario a octal ...6

Problema 5. Sucesin matemtica ....7

Problema 6. Relleno de mapa de bits I .8

Problema 7. Seguridad de cuentas bancarias ..10

Problema 8. Relleno de mapa de bits II. Negativo de mapa de bits 12

Problema 9. Ley DHont ..14

Problema 10. Bsqueda en un intervalo.....16

Problema 11. Space Invaders ...17

Problema 12. Cleaning-Robot .......19


















1
Algoritmos Jos ngel Acosta Rodrguez

Problema 1.



Figurita original

1 0 0
1 0 0
1 1 0

Rotacin a derechas

1 1 1
1 0 0
0 0 0

Flip horizontal

0 0 0
1 0 0
1 1 1
Se desea hacer un cierto algoritmo para un juego. El algoritmo recibe una
matriz A de dimensiones 3x3. La matriz describe una cierta figurita en blanco
y negro. Los elementos de la matriz a
ij
contienen unos (color negro) para
representar elementos de la figurita y ceros (color blanco) en otro caso. Por
ejemplo vase en la figura de la derecha que se representa con unos una
sencilla figura, que podra ser el carcter L, y el resto de componentes de la
matriz son cero. El algoritmo lee desde el teclado los elementos a
ij
de la
matriz A y una variable p. Segn el valor de p el algoritmo debe hacer lo
siguiente:
Si p=1, debe rotar la figura a derechas 90 grados.
Si p=2, debe hacer un Flip horizontal respecto de la fila central, es
decir hacer una imagen especular de las filas superior e inferior.
Si p>2, el algoritmo continua y escribe la matriz resultante B.
El algoritmo se representa en la figura de abajo a la izquierda, en forma de
diagrama de flujo. En dicho diagrama de flujo ya est implementada la parte
de lectura desde el teclado de los elementos a
ij
de la matriz A y la variable
p. Tambin se tienen inicializados a cero los subndices i y j.
Se pide que se completen los dos diagramas de flujo correspondientes a la
rotacin y al flip de la figurita representada en la matriz A, de modo que no
pueden definirse ms subndices que los ya inicializados i y j. Adems
la matriz resultante de la rotacin o del flip debe almacenarse en los
elementos b
ij
de una matriz B, ya inicializada.

Eje de giro

FIN MODULO

LEE MATRIZ A
y variable p
p>2?

ROTACIN
A
DERECHAS

FLIP
HORIZONTAL
p=1?
SI NO
INICIO ROTACIN A DERECHAS INICIO FLIP HORIZONTAL
FIN ROTACIN A DERECHAS
FIN FLIP HORIZONTAL
SI
NO

ESCRIBE MATRIZ B
INICIO MODULO
SI
2
Algoritmos Jos ngel Acosta Rodrguez


Problema 2.






































Se desea realizar un algoritmo que lea un nmero entero (positivo o negativo) y escriba dicho nmero en binario
codificado en modo signo-valor absoluto en N bits. Asuma que el nmero se puede representar con N bits.
La representacin en modo signo-valor absoluto consiste en considerar el bit ms significativo (el 1) como bit de
signo (0 positivo, 1 negativo) y en los N-1 bits restantes codificar en binario el valor absoluto del nmero (ver
ejemplos).
Para solucionar este problema se propone lo siguiente:
1) Realice un diagrama de flujo correspondiente a un mdulo que tome un nmero positivo num y determine
un vector b de N componentes que contiene la codificacin binaria en base 2 del mismo. Considere que la
componente b
1
corresponde al bit menos significativo (el ltimo), y la b
N
al signo.
2) Utilizando el mdulo anterior, realice un diagrama de flujo que solucione el problema
Por ejemplo: Si se lee el nmero 100 y se consideran 8 bits, el mdulo del apartado 1) genera el vector
b=[0,0,1,0,0,1,1,0] y el diagrama completo escribe la secuencia 01100100. Si se lee el nmero -100 y se consideran
8 bits, el mdulo del apartado 1) genera el mismo vector b=[0,0,1,0,0,1,1,0] y el diagrama completo escribe la
secuencia 11100100.

INICIO DEL MDULO
FIN DEL MDULO

INICIO DEL DIAGRAMA PRINCIPAL
FIN DEL DIAGRAMA PRINCIPAL
3
Algoritmos Jos ngel Acosta Rodrguez


1 0 0 1 1 1 1 1 0 0 1
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
v
9
v
10
v
11



Problema 3.

Dibujar los diagramas de flujo que resuelven los siguientes problemas y rellenar las tablas de variables de cada uno:

a) Suponga leda una secuencia binaria v de N bits, encontrar la primera secuencia de S unos seguidos y
escribir por pantalla la posicin del primer uno dentro de la secuencia v. Si no se encuentra ninguna secuencia
de S unos seguidos, mostrar por pantalla un cero.

b) Si la secuencia binaria leda representa un n en base 2 tal que v
N
es el bit menos significativo, calcular el
nmero que representa en base 10 y escribirlo en pantalla.


Ejemplo: N=11
S =3

a) Por pantalla: 4
b) Por pantalla: 1273

No utilice ms espacio que el indicado. Use acceso a vectores y matrices mediante subndices. Emplee nicamente
expresiones en lenguaje natural, operaciones aritmticas (+, -, , /, resto de la divisin entera), asignacin () y
comparaciones (>, <, =, , , ). Se puntuar la claridad y legibilidad de los diagramas.

a)

v Vector de
variables enteras
Dato. Secuencia leda de bits.
N Variable entera Dato. Nmero de bits de la secuencia leda.
S Variable entera Dato. Nmero de bits a 1 que localizar en v.







b)

v Vector de
variables enteras
Dato. Secuencia leda de bits.
N Variable entera Dato. Nmero de bits de la secuencia leda.














4
Algoritmos Jos ngel Acosta Rodrguez



Inicio a
Inicio b
Fin a Fin b
5
Algoritmos Jos ngel Acosta Rodrguez


Problema 4.

Considere una secuencia de N bits almacenados en un vector b de N componentes de forma que b
N
almacena el bit
ms significativo de la secuencia. Se pide realizar un algoritmo que obtenga el nmero en octal (en base 8), lo
almacene en el vector d y lo escriba en pantalla.

Para pasar de un nmero en base 2 a base 8, basta con tomar los bits de la secuencia de 3 en 3 e interpretarlos
como un nmero decimal. Vase el siguiente ejemplo, en el que el nmero binario 01011110 se transforma en el 136
en base 8.

Para realizar el algoritmo se pide
a) Un mdulo que tome un nmero binario de 3 bits
almacenado en un vector v y calcule el dgito decimal
que representa.
b) Basndose en el anterior, hacer el diagrama de
flujo que resuelve el problema.





























b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1

b 0 1 0 1 1 1 1 0

d
1=01)
2
3=011)
2
6=110)
2

d
3
d
2
d
1

b Vector de N enteros
M Entero. Nmero de componentes de d
d Vector de M enteros






6
Algoritmos Jos ngel Acosta Rodrguez


Problema 5.

Obtenga un algoritmo que resuelva el problema cuyo enunciado es: Calcular el producto de los e primeros elementos
de una sucesin cuyo trmino general cumple:
a
k
=a
k-1
+2a
k-2
+... +na
k-n
, siendo a
1
=1 , a
2
=2, ..., a
n
=n
El algoritmo ha de leer nicamente el valor de e y de n. Suponga que ambos son enteros y positivos. El algoritmo ha
de escribir como nico resultado el producto:



Se pide: dibujar el diagrama de flujo en el recuadro y escribir la lista de objetos usados en la tabla. Para la confeccin
del diagrama utilice nicamente las operaciones +,-, , /, asignacin (), comparaciones >, <, >=, <=, acceso a
memoria con subndices y expresiones literales en lenguaje natural. El diagrama de flujo ha de estar estructurado, ser
claro y legible y ocupar slo el espacio interior del recuadro.

=
=
e
h
h
a p
1











7
Algoritmos Jos ngel Acosta Rodrguez



Problema 6.



i
Se ha desarrollado un algoritmo para incluirlo en un cierto programa de dibujo.
El algoritmo resuelve el problema de relleno de una figura cerrada en dos
dimensiones. La figura viene descrita por un mapa de bits en blanco y negro
(ver recuadro abajo). Dicha figura se describe con una matriz A de dimensiones
m x n, cuyos elementos a
ij
pueden valer 0 (color blanco) 1 (color negro).
El algoritmo completo se muestra en el recuadro del margen derecho, el cual
contiene un mdulo interno, PUNTO INTERIOR, que determina si un elemento
a
ij
est en el interior de la figura o no. Dicho mdulo se subdivide en otros
cuatro, denominados ARRIBA, ABAJO, IZQUIERDA y DERECHA. Cada uno
de estos mdulos recorre la figura desde un elemento a
ij
cualquiera hacia
donde indica su nombre y hasta que encuentra un borde de la figura (ver
recuadro explicativo abajo), si es que dicho borde existe. Cada mdulo
ARRIBA, ABAJO, IZQUIERDA y DERECHA, modifica el valor de cierta
variable F. As el primer mdulo, ARRIBA, si encuentra un borde incrementa el
valor de la variable F. Despus el segundo mdulo, ABAJO, hara lo mismo, y
as sucesivamente. Si cualquiera de los mdulos no detecta borde alguno, no
incrementa dicha variable. De este modo, si al pasar por los cuatro mdulos el
punto considerado est en el interior de la figura (es decir dentro de los
bordes), F deber valer 4.
NOTA: Para la confeccin del diagrama de flujo utilice nicamente las
operaciones +,-, , /, asignacin (), comparaciones <, >, , , =, lgicas y,
o, acceso a memoria con subndices y expresiones literales en lenguaje
natural. El diagrama de flujo ha de estar estructurado, ser claro y legible y
ocupar slo el espacio interior del recuadro.
Figura original
0 0 0 0 0 1 0 0
0 1 1 0 1 0 1 0
0 1 1 0 1 0 1 0
0 1 1 0 1 0 0 1
0 1 0 1 1 0 0 1
0 1 0 0 0 0 0 1
0 0 1 0 0 1 1 0
0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0




Figura rellenada
0 0 0 0 0 1 0 0
0 1 1 0 1 1 1 0
0 1 1 0 1 1 1 0
0 1 1 0 1 1 1 1
0 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1
0 0 1 1 1 1 1 0
0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0






a
ij






j

SI
SI
FIN
F = 4
a
ij
1

PUNTO
INTERIOR
j>n
NO
NO
INICIO
i>m
jj+1
NO
ii+1
j1
i1
SI

INICIO PUNTO INTERIOR
FIN PUNTO INTERIOR
F 0

ARRIBA

ABAJO

IZQUIERDA

DERECHA
ARRIBA
ABAJO
IZQUIERDA DERECHA
a) Realizar los diagramas de flujo de
los mdulos ARRIBA y
DERECHA. Ntese que son
mdulos y no subprogramas. Se
aconseja utilizar bucles con salida
en cabeza o en medio.
b) El diagrama del mdulo PUNTO
INTERIOR, puede optimizarse, ya
que si cualquiera de sus mdulos
detecta que no existe un borde, el
elemento a
ij
no ser un punto
interior. Optimcelo usando los
mdulos ARRIBA, ABAJO,
IZQUIERDA y DERECHA.
8
Algoritmos Jos ngel Acosta Rodrguez


a)



























b)
NOMBRE VALOR
DESCRIPCIN DEL
OBJETO
m
Constante
entera
Nmero de filas
n
Constante
entera
Nmero de columnas
A
Matriz m x n
entera
Describe la figura a
rellenar
a
ij
Enteros
Elementos 0 o 1 de la
matriz A
i Entera ndice de filas
j Entera ndice de columnas
F Entera
Variable que describe si
un punto es interior








INICIO ARRIBA
FIN ARRIBA
INICIO DERECHA
FIN DERECHA

FIN PUNTO INTERIOR OPTIMIZADO
INICIO PUNTO INTERIOR OPTIMIZADO
9
Algoritmos Jos ngel Acosta Rodrguez


Problema 7.

El cdigo de cuenta corriente de una cuenta bancaria est compuesto por el cdigo de entidad (4 dgitos),
el cdigo de sucursal (4 dgitos), el cdigo de control (2 dgitos) y en nmero de cuenta (10 dgitos), como
se muestra en la figura adjunta:




Para el clculo de los 2 dgitos del cdigo de control se utiliza el siguiente algoritmo, el cual calcula un
dgito de control dado un nmero cualquiera de 10 dgitos:

1. Calcular el nmero N dado por la frmula siguiente:

=

=
11 11
10
1 i
i i
p d mod N

donde d
i
el es el dgito i-simo del nmero del que se desea calcular su dgito de control, p
i
es la
componente i-sima de un vector dado p de 10 componentes, y mod es la operacin de resto de
divisin entera (vase nota abajo).

2. Segn el valor de N, el dgito de control valdr:
a. Si N = 11, entonces el dgito de control es 0.
b. Si N = 10, entonces el dgito de control es 1.
c. En cualquier otro caso el dgito de control es el propio nmero N.

Para obtener el primer dgito de control se utilizan los cdigos de entidad y de sucursal del cdigo de
cuenta corriente aadindoles dos cero por la izquierda, y despus se le aplica el algoritmo dado. Para el
segundo dgito de control se le aplica el algoritmo a los 10 ltimos dgitos correspondientes al nmero de
cuenta.

Se pide:

a) Realizar el diagrama de flujo del algoritmo dado para un nmero cualquiera cuyos dgitos estn
almacenados como un vector U de 10 componentes. Dicho algoritmo debe almacenar en una
variable denominada DC el valor del dgito de control obtenido.

b) Usar el diagrama de flujo del apartado anterior como un mdulo y realizar el diagrama de flujo para
comprobar que los dgitos de control de un cdigo de cuenta corriente dado, son correctos. El
cdigo de cuenta corriente est almacenado en un vector V. Es obligatorio usar el mdulo creado
en el apartado anterior tantas veces como sea necesario.

NOTA: Para la confeccin del diagrama de flujo utilice nicamente las operaciones +,-, , /, asignacin (),
comparaciones <, >, , , =, lgicas y, o, acceso a memoria con subndices y expresiones literales en
lenguaje natural. Adems dispone de la operacin resto de divisin y represntela como mod(X/Y), es
decir resto de dividir la cantidad X entre la cantidad Y. El diagrama de flujo ha de estar estructurado,
ser claro y legible y ocupar slo el espacio interior del recuadro correspondiente.
Cdigo
entidad
Cdigo
sucursal
Nmero de
cuenta
Cdigo
control
10
Algoritmos Jos ngel Acosta Rodrguez


a) b)




























NOMBRE VALOR
DESCRIPCIN DEL
OBJETO
N
Constante
entera
Nmero resultado del
algoritmo
DC
Constante
entera
Valor del dgito de
control obtenido
U
Vector de
dimensin 10
Contiene el nmero dato
para el algoritmo
V Vector
Contiene el cdigo de
cuenta corriente
i ndice Para vectores




FIN MDULO
INICIO
FIN
INICIO MDULO
11
Algoritmos Jos ngel Acosta Rodrguez


Problema 8.















































Para hacer ciertas labores de fotoimpresin en una imprenta se hace un
negativo especial de las fotos. Este negativo se les aplica a fotos en blanco
y negro. Las fotos representan figuras cerradas descritas por un mapa de
bits en blanco y negro. Dicha figura se representa con una matriz A de
dimensiones m x n, cuyos elementos a
ij
pueden valer 0 (color blanco)
1 (color negro). Se desarrolla un algoritmo para hacer el negativo,
includo el borde. Dicho algoritmo contiene un mdulo interno denominado
PUNTO INTERIOR que determina si un elemento a
ij
est en el interior de
la figura o no. Dicho mdulo se subdivide en otros cuatro (ver figura abajo a
la derecha), denominados ARRIBA, ABAJO, IZQUIERDA y DERECHA.
Cada uno de estos mdulos recorre la figura desde un elemento a
ij
cualquiera hacia donde indica su nombre y hasta que encuentra un borde
de la figura, si es que dicho borde existe (ver figura explicativa abajo a la
izquierda). Cada mdulo ARRIBA, ABAJO, IZQUIERDA y DERECHA,
modifica el valor de la variable F. As el primer mdulo, ARRIBA, si
encuentra un borde incrementa el valor de la variable F. Despus el
segundo mdulo, ABAJO, hara lo mismo, y as sucesivamente. Si alguno
de los mdulos no detectase borde alguno, no se modificara dicha
variable. De este modo, si al pasar por los cuatro mdulos el punto
considerado est en el interior de la figura (es decir dentro de los bordes), F
deber valer 4.
NOTA: Para hacer los diagramas de flujo utilice nicamente las
operaciones +,-, , /, asignacin (), comparaciones <, >, , , =, lgicas
y, o, acceso a memoria con subndices y expresiones literales en
lenguaje natural. El diagrama de flujo ha de estar estructurado, ser claro y
legible y ocupar slo el espacio interior del recuadro.
Figura original
0 0 0 0 0 1 0 0
0 0 0 0 1 0 1 0
0 0 0 0 1 0 1 0
0 0 1 0 1 0 0 1
0 1 0 1 1 0 0 1
0 1 0 0 0 0 0 1
0 0 1 0 0 1 1 0
0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0



Figura en negativo
1 1 1 1 1 0 1 1
1 1 1 1 0 0 0 1
1 1 1 1 0 0 0 1
1 1 0 1 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 1
1 1 1 0 0 0 1 1
1 1 1 1 1 1 1 1
Se pide:
c) Realizar el diagrama de flujo del mdulo ABAJO
dentro del mdulo PUNTO INTERIOR. Ntese que
son mdulos y no subprogramas. Suponga i, j
ya conocidas para este apartado.
d) Realizar el diagrama de flujo que resuelve el
problema al completo usando, obligatoriamente el
mdulo PUNTO INTERIOR. Es decir, se desea que
dada una figura original (matriz A m x n, ya leida y
en memoria), el algoritmo realice el negativo y lo
escriba en la matriz B. Ntese que tambin se
hace el negativo del borde de la figura.





a
ij






j
ARRIBA
ABAJO
IZQUIERDA
DERECHA
i

INICIO PUNTO INTERIOR
F 0

ARRIBA

ABAJO

IZQUIERDA

DERECHA
F=2
FIN PUNTO INTERIOR
F=3
F=1
NO
NO
NO
SI
SI
SI
12
Algoritmos Jos ngel Acosta Rodrguez



INICIO ABAJO (apartado a)
FIN ABAJO (apartado a)

NOMBRE VALOR
DESCRIPCIN DEL
OBJETO
m
Constante
entera
Nmero de filas
n
Constante
entera
Nmero de columnas
A
Matriz m x n
entera
Figura original
a
ij
Enteros
Elementos 0 o 1 de la
matriz A
i Entera ndice de filas
j Entera ndice de columnas
F Entera
Variable que describe si
un punto es interior
B
Matriz m x n
entera
Negativo de la figura
original







INICIO apartado b
FIN apartado b
13
Algoritmos Jos ngel Acosta Rodrguez


Problema 9.

La asignacin de diputados en una provincia se rige por la ley DHont. En una versin muy simplificada la
ley se aplica como se describe a continuacin. Suponga que se tiene una provincia a la que se le asignan
5 diputados y donde hay 4 formaciones polticas relevantes (F
1
, F
2
, F
3
y F
4
). Despus de la cita electoral se
tendr un vector de votos (V) donde cada elemento del vector hace referencia a los votos de una
determinada fuerza poltica. Dicho vector (V), adems, estar ordenado en nmero de votos de forma
decreciente. Con este vector de votos se crea una matriz A como la que aparece en la figura y donde cada
columna se corresponde con el vector V dividido por 1,2,3, y as sucesivamente hasta el total de los 5
diputados asignados.















Ahora slo falta escoger las 5 cifras ms altas de la matriz A y
asignar a cada una un diputado (celdas sombreadas en la figura).
En este caso, el resultado ser el que aparece en la tabla al
margen derecho. Dicho resultado puede almacenarse en un vector
de diputados ordenado (D).

Dado un vector de votos V, ya ordenado en forma decreciente,
de una provincia a la que se le asignan N diputados y en la cual
existen M fuerzas polticas relevantes, se pide:

c) Realizar un diagrama de flujo tal que dado el
vector de votos V, ya ordenado, cree la matriz A
de dimensiones M x N.
d) Realizar un diagrama de flujo que cree un vector
de diputados D, donde cada elemento ser el
nmero de diputados asignado a la fuerza
poltica correspondiente. Este apartado debe
resolverse en dos partes. Primero crear un
mdulo que calcule el mximo de la matriz A y
su posicin. Despus resolver el apartado
usando dicho mdulo el nmero de veces que
sea necesario.

NOTA: Los vectores y matrices conocidos, ya estn
almacenados en memoria y el resto inicializados a
cero. Para la elaboracin del diagrama de flujo utilice
nicamente las operaciones +,-, , /, asignacin (),
comparaciones <, >, , , =, lgicas y, o, acceso a
memoria con subndices y expresiones literales en
lenguaje natural. El diagrama de flujo ha de estar
estructurado, ser claro y legible y ocupar slo el
espacio interior del recuadro correspondiente.
A
4x5

VOTOS
(V)
V2 V3 V4 V5
F
1

120000 60000,0 40000,0 20000,0 13333,3
F
2

82000 41000,0 27333,3 13666,7 9111,1
F
3

55000 27500,0 18333,3 9166,7 6111,1
F
4

25000 12500,0 8333,3 4166,7 2777,8
FUERZAS
POLTICAS
DIPUTADOS
(D)
F
1
2
F
2
2
F
3
1
F
4
0
NOMBRE VALOR
DESCRIPCIN DEL
OBJETO
M Constante
Nmero de fuerzas
polticas
N Constante Nmero de diputados
V
Vector de
dimensin M
Vector conocido de
votos
D
Vector de
dimensin M
Vector de diputados
A
Matriz de
dimensiones
M x N
Matriz para el cculo del
nmero de diputados
i ndice Para vectores / matrices
j ndice Para vectores / matrices
k ndice Para vectores / matrices



14
Algoritmos Jos ngel Acosta Rodrguez


a) b)






























b)



























FIN apartado a)
INICIO MDULO apartado b)
FIN MDULO apartado b)
INICIO apartado a)

INICIO apartado b)
FIN apartado b)
15
Algoritmos Jos ngel Acosta Rodrguez


Problema 10.

Realice en el recuadro adjunto el diagrama de flujo de un programa que lea desde teclado una lista de valores
enteros positivos y los almacene en un vector v. La lectura por teclado finaliza cuando se introduzca un valor
negativo.

A continuacin, el programa preguntar otros 2 nmeros por teclado (en cualquier orden), y recorrer el vector v,
calculando el porcentaje de elementos que estn entre el menor y el mayor de ambos nmeros (incluidos los
extremos).

Ejemplo: Lista: 24, 30, 5, 9, 85, 19 Intervalo: 20, 5 Ns en intervalo: 5, 9, 19. Resultado: 50%

NOTA: Para hacer los diagramas de flujo utilice nicamente las operaciones +,-, , /, asignacin (), comparaciones
<, >, , , =, lgicas y, o, acceso a vectores y matrices con subndices y expresiones literales en lenguaje natural.
El diagrama de flujo ha de estar estructurado, ser claro y legible y ocupar slo el espacio interior del recuadro.






























NOMBRE TIPO DESCRIPCIN DEL OBJETO










16
Algoritmos Jos ngel Acosta Rodrguez



Problema 11.















































Un antiguo videojuego llamado Space Invaders tena como objetivo defender la Tierra de una invasin enemiga.
La escena en la pantalla estaba formada por una matriz de puntos monocromos, blancos y negros. Los objetos
estaban formados simplemente por un mapa de bits en negro sobre fondo blanco. Describiremos aqu la escena
mediante una matriz A de dimensiones m x n, cuyos elementos a
kj
pueden valer 0 (color blanco) 1 (color
negro). Las formas de los objetos y la escena son exactamente como aparecen en la figura: las naves
invasoras, la nave del jugador y los proyectiles. Los movimientos de los objetos son: las naves invasoras pueden
moverse libremente, mientras que la nave del jugador slo puede moverse en horizontal; los proyectiles de la nave
del jugador salen desde el disparador y se mueven verticalmente hacia arriba; y los proyectiles de las naves
invasoras se mueven en vertical hacia abajo. Teniendo en cuenta que los mdulos son parte del algoritmo del
videojuego, se pide:

a) Dada una posicin a
pq
de colisin entre entre el proyectil del jugador y una nave invasora, realice el
diagrama de flujo de un mdulo que se denomine DESTRUYE, tal que destruya la nave invasora, es decir
borre por completo la nave invasora de la escena. Este mdulo no debe detectar la colisin slo
destruir la nave invasora. Para facilitar la resolucin tenga en cuenta que todas las naves enemigas estn
contenidas en submatrices de 3x3 y que estn siempre separadas horizontalmente como mnimo por un
hueco de 3x3 (ver figura).
b) Dada la posicin a
kj
de disparo del proyectil del jugador, realice el diagrama de flujo de un mdulo que
anime paso a paso el movimiento del proyectil del jugador desde que sale del disparador (ver figura) hasta
que, o bien se encuentra con una nave invasora o bien llega al final de la escena sin acierto. Si hay una
colisin con una nave invasora debe usar el mdulo DESTRUYE del apartado anterior para destruirla
proporcionndole las coordenadas correspondientes.

NOTA: Para hacer los diagramas de flujo utilice nicamente las operaciones +,-, , /, asignacin (), comparaciones
<, >, , , =, lgicas y, o, acceso a vectores y matrices con subndices y expresiones literales en lenguaje natural.
El diagrama de flujo ha de estar estructurado, ser claro y legible y ocupar slo el espacio interior del recuadro.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0
0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
Nave del jugador
Naves invasoras
Proyectil jugador
Disparador
Posicin de salida del proyectil a
kj
(a 1 antes de salir el proyectil)
Posicin a
pq

17
Algoritmos Jos ngel Acosta Rodrguez






























































INICIO DESTRUYE (apartado a)
FIN DESTRUYE (apartado a)

NOMBRE TIPO
DESCRIPCIN DEL
OBJETO
m
Constante
entera
Nmero de filas
n
Constante
entera
Nmero de columnas
A
Matriz m x n
entera
Escena original
a
kj
Enteros
Elementos 0 o 1 de la
matriz A
p Entera
ndice de fila de la
colisin del proyectil
q Entera
ndice de columna de la
colisin del proyectil
k Entera
ndice de la fila de salida
del proyectil
j Entera
ndice de la columna de
salida del proyectil








INICIO apartado b)
FIN apartado b)
18
Algoritmos Jos ngel Acosta Rodrguez


Problema 12.















































NOMBRE TIPO
DESCRIPCIN DEL
OBJETO
M
Constante
entera
Nmero de filas
N
Constante
entera
Nmero de columnas
A
Matriz M x N
entera
Describe la piscina
a
kj
Enteros
Elementos 0 o 1 de la
matriz A
k Entera ndice de fila
j Entera ndice de columna
p Entera
ndice de la fila de salida
del robot
q Entera
ndice de la columna de
salida del robot
t Entera
Variable para el sentido
de avance del robot
F Entera
Variable que indica al
robot el fin de limpieza
NO SE PUEDEN DEFINIR NUEVAS VARIABLES
Se ha diseado un robot limpia piscinas llamado Cleaning-Robot
(ver figura). El funcionamiento del robot es el siguiente:
1. El usuario lo arroja a la piscina en cualquier zona.
2. El robot se hunde y una vez llega al fondo calcula su posicin
respecto a los bordes de la piscina. Para ello el robot digitaliza
la piscina mediante una matriz de puntos A de dimensiones M x
N, cuyos elementos a
kj
pueden valer 0 (zona an sucia) 1
(zona limpiada). La digitalizacin la hace de modo que siempre
deja un nmero par de celdas desde el mismo hacia las
paredes (ver figura).
3. Una vez ha calculado su posicin, por ejemplo a
pq
, ste puede
moverse slo paralelo a las paredes de la piscina y celda a
celda de la matriz (ver figura abajo).
Se desea hacer un algoritmo tal que, dada una posicin cualquiera
(p,q) de partida del robot, ste limpie por completo la piscina sin
pasar dos veces por el mismo sitio. Para ello se pide completar
en los recuadros A y B del diagrama de flujo dado, lo siguiente:
1. Recuadro A: aqu debe ir la actualizacin de los ndices de la
siguiente posicin del robot en la matriz. El avance del robot
debe ser celda a celda y en el sentido el indicado en la figura al
margen del Recuadro (ver diagrama de flujo).
2. Recuadro B: rellenar los bloques del diagrama de flujo,
sabiendo que existen dos mdulos predefinidos: el primero
denominado MOVER y hace que el robot se mueva celda a
celda a la posicin (contigua) indicada por los ndices (k,j); y
el segundo denominado RETROCESO que lleva al robot sin
limpiar desde la posicin (M,N) hasta la (1,1).
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0

0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Cleaning-Robot
Descripcin del
movimiento del Robot
Posicin a
pq
Nmero
par de
celdas
Nmero par de celdas
Nmero par de celdas
Nmero
par de
celdas
NOTAS: Para hacer los diagramas de flujo
utilice nicamente las operaciones +,-, , /,
asignacin (), comparaciones <, >, , ,
=, lgicas y, o, acceso a vectores y
matrices con subndices y expresiones
literales en lenguaje natural. El diagrama
de flujo ha de estar estructurado, ser claro
y legible y ocupar slo el espacio interior
del recuadro.
19
Algoritmos Jos ngel Acosta Rodrguez






INICIO
FIN
F = 1
NO

k p, j q
t 1
F 0
NO
j j + t
j = N
y
k = M
a
kj
1
j = N
t -1
k k + 1
SI
NO
t 1
k k + 1
j = 1
SI
NO
SI
NO


SI

SI
Recuadro A
Recuadro B
Sentido de avance
20

También podría gustarte